makefile:如果存在c文件,则构建目标文件

时间:2018-04-28 18:36:36

标签: c makefile

我有一个使用编译器标志的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中没有适当的位置。为此,我需要减少一些层次,并失去重建原因的可追溯性。

1 个答案:

答案 0 :(得分:1)

制作条件怎么样?

ifneq ($(wildcard MyCfile.C),)
myCFile.o: compilerflagChange
endif

注意:您对字母大小写的使用非常不寻常(myCFile.oMyCfile.C)。我知道最流行的操作系统不区分大小写,但您应该认真考虑更一致的拼写方案。便携性,特别是免费时,是一件好事。