首页 > 解决方案 > makefiles 隐式规则说文件是最新的,但文件甚至不存在

问题描述

我尝试使用 make 的隐式规则来编译简单的 C 文件。

# -*- MakeFile -*-

new.o: new.c

输出:

make: 'new.o' is up to date.

new.o此时不存在。但我添加了另一条规则,它按预期工作。

# -*- MakeFile -*-

new.o: new.c

clean:
    rm -f new.o

输出:

cc    -c -o new.o new.c

现在它按预期运行了命令。是否需要至少有两个食谱才能起作用,还是我错过了一些非常明显的东西?

标签: makefilegnu-make

解决方案


我通过添加额外的东西犯了一个愚蠢的错误新队 我的隐式配方下方的TAB字符。去除多余的新队 TAB字符解决问题

编辑的makefile

# -*- MakeFile -*-

new.o: new.c

输出:

cc    -c -o new.o new.c

推荐阅读