两个(或更多)目标 - >不同的目标文件,但相同的库

时间:2018-04-06 12:49:34

标签: c makefile

我有一个项目,它分为一个高级代码和一个低级代码。低级代码构建如下:

SW_UNIT = FOO
C_OBJECTS = bar.o 
BAZ_C_OBJECTS = baz.o
LIBRARY = lib/lib$(SW_UNIT).a
# 
.c:o:
      $(CC) -c $(CFLAGS) $<
#
.PHONY: clib    
clib: $(BAZ_C_OBJECTS) $(C_OBJECTS) $(LIBRARY)
#
$(LIBRARY): $(C_OBJECTS)
            @ar ru $(LIBRARY) $(C_OBJECTS)

.PHONY: baz
baz: C_OBJECTS = $(BAZ_C_OBJECTS)
baz: clib

这样可以。

我现在希望有两个不同的低级实现,但是生成高级代码可以链接的相同库。我的尝试很粗糙:

{{1}}

虽然这有效并且存档只包含相应的.o文件,但它看起来很丑陋而且我还想只编译相应的.c文件,而不是两者(或者在更低级别实现的情况下都是如此) )。有没有办法改善这个?

0 个答案:

没有答案