makefile特定于目标的文件

时间:2015-10-14 20:33:30

标签: c makefile

我试图创建一个编译两个不同文件集的makefile文件。这是可能的吗?

到目前为止我尝试的是:

target1: OBJ = foo1.o foo2.o  
target1: application

target2: OBJ = foo3.o foo4.o
target2: application

application: $(OBJ)
    $(LD) $(OBJ)

使用正确的参数调用LD会发生什么变化,但是永远不会实际检查依赖项,因此将.c文件编译为.o的隐式规则永远不会执行,因此链接器失败:

ld: cannot find foo1.o: No such file or directory
ld: cannot find foo2.o: No such file or directory

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

例如,您可以使用此功能(考虑到您不会立即调用多个目标的make):

OBJ := foo1.o foo2.o

ifeq "$(MAKECMDGOALS)" "target2"
OBJ := foo3.o foo4.o
endif

target1 target2: application

application: $(OBJ)
    $(LD) $^