我的项目中有两组源文件,我需要从中生成目标文件。
SET_ONE = foo.o bar.o
SET_TWO = zerz.o zork.o
我希望在SET_ONE中构建文件时向CFLAGS添加一个额外的选项,而不是SET_TWO中的文件。例如,我想:
> make -n
cc -c -DEXTRA_FLAG foo.c
cc -c -DEXTRA_FLAG bar.c
cc -c zerz.c
cc -c zork.c
...
由于文件具有相同的扩展名,因此相同的规则适用于所有文件,而且我没有看到一种简单的方法来调整CFLAGS中的其中一组中的文件。
我可以为SET_ONE中的文件制作自定义规则:
foo.o : foo.c
$(CC) $(CFLAGS) -DEXTRA_FLAG foo.c
bar.o : bar.c
$(CC) $(CFLAGS) -DEXTRA_FLAG bar.c
但这导致重复,这将更难维持。有更清洁的方法吗?自从我攻击了一个makefile以来,这可能已经十年了。
答案 0 :(得分:3)
有很多方法可以做到这一点。最简单的用途target-specific variables;添加到您的makefile:
$(SET_ONE): CFLAGS += -DEXTRA_FLAG