我写了一个Makefile,发现在执行命令时,在Mmakefile中的所有命令都执行完之后,执行make
了一个意外。rm
但是我没有rm
在Makefile中写命令。
run-%: d/%.out
$<
d/%.out: d/%.c
gcc -o $(subst .c,.out,$<) $<
运行输出make run-a
:
gcc -o d/a.out d/a.c
d/a.out
rm d/a.out
注意尾随rm d/a.out
,我没有写。
什么情况下会添加自动rm
命令?
当您执行此操作时
make run-a
,该文件d/a.out
由中间目标(的依赖项run-a
)创建,当主目标 (run-a
) 已构建且不再需要该中间目标的结果时,该中间目标将被删除。d/a.out
您可以通过将其声明为“珍贵”来阻止删除:另请参阅GNU Make 手册中的“隐式规则链” :