makefiles 隐式规则说文件是最新的但文件甚至不存在

makefiles implicit rules says file up to date but file doesn't even exist

我尝试使用 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

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

我犯了一个愚蠢的错误,在我隐含的配方下面添加了额外的 newline TAB 字符。删除多余的 newline TAB 字符解决问题

已编辑 makefile

# -*- MakeFile -*-

new.o: new.c

输出:

cc    -c -o new.o new.c