我有一个makefile,它在命令行中带有选项
make OPTION_1=1
基于该值,它将向对象的子集添加其他编译器定义。
ifeq ($(OPTION_1), 1)
CC_FLAGS += -DOPTION_1_ON
endif
定义中的更改会影响所包含的头文件的内容-存根或实现暴露给目标文件。
如何通过此选项更改来重建受“影响”的文件?
最佳答案
我使用一个文件来记住这些选项的最后一个值,如下所示:
.PHONY: force
compiler_flags: force
echo '$(CC_FLAGS)' | cmp -s - $@ || echo '$(CC_FLAGS)' > $@
cmp || echo
位意味着仅当设置更改时才触摸文件compiler_flags
,因此现在您可以编写如下内容$(OBJECTS): compiler_flags
每当编译器标志更改时,都会导致
$(OBJECTS)
的重建。每次您运行make时,都会执行editor_flags的规则,但是只有在实际修改$(OBJECTS)
文件的情况下,才会触发compiler_flags
的重建。关于makefile - 强制gnu make重建受编译器定义影响的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3236145/