我试图创建一个编译两个不同文件集的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
这样做的正确方法是什么?
答案 0 :(得分:0)
例如,您可以使用此功能(考虑到您不会立即调用多个目标的make):
OBJ := foo1.o foo2.o
ifeq "$(MAKECMDGOALS)" "target2"
OBJ := foo3.o foo4.o
endif
target1 target2: application
application: $(OBJ)
$(LD) $^