我有一个使用编译器标志的c文件。当编译器标志改变时,我强制c文件在makefile文件中更新它的值:
compilerflagChange: FORCE
echo ${CFLAGS} | cmp -s - $@ || echo ${CFLAGS} > $@
myCFile.o: compilerflagChange
这非常好,除非我清理整个项目然后运行。 在这种情况下,在进入语句之前尚未生成myCFile.C
myCFile.o: compilerflagChange
这将导致构建因错误" MyCfile.C而崩溃,没有这样的文件"。
问题:如何根据C文件是否存在来制定规则? "如果文件存在+ cflagChange,请更新文件,否则不更新"
更多信息: "为什么不在每次生成MyCFile.c之后重新构建myCFile.o?" makefile中没有适当的位置。为此,我需要减少一些层次,并失去重建原因的可追溯性。
答案 0 :(得分:1)
制作条件怎么样?
ifneq ($(wildcard MyCfile.C),)
myCFile.o: compilerflagChange
endif
注意:您对字母大小写的使用非常不寻常(myCFile.o
与MyCfile.C
)。我知道最流行的操作系统不区分大小写,但您应该认真考虑更一致的拼写方案。便携性,特别是免费时,是一件好事。