Makefile GNU Make中的自动删除钩子
默认情况下,Makefile GNU Make中的自动删除钩子,makefile,gnu-make,Makefile,Gnu Make,默认情况下,make自动删除不再需要的目标 例如: do_it: write_bar write_baz echo done > $@ .INTERMEDIATE: write_foo write_bar write_baz write_foo: echo foo > $@ write_bar: write_foo cat $< > $@ echo bar >> $@ write_baz: write_foo e
make
自动删除不再需要的目标
例如:
do_it: write_bar write_baz
echo done > $@
.INTERMEDIATE: write_foo write_bar write_baz
write_foo:
echo foo > $@
write_bar: write_foo
cat $< > $@
echo bar >> $@
write_baz: write_foo
echo buz > $@
do\u it:写吧写吧
回音完成>$@
.中级:write_foo write_bar write_baz
写_foo:
echo foo>$@
写吧:写吧
cat$<>$@
回音条>>$@
写_-baz:写_-foo
echo buz>$@
执行write_-bar
和write_-baz
后,将删除此处的write_-foo
我不想简单地删除文件,而是在write\u foo
删除之前执行一些操作
我是否可以更改自动删除命令或为此操作分配任何挂钩
更新:自动删除仅适用于中间规则。- make(至少GNU make)不会自动删除成功构建的目标(如果make是
ed,它会删除目标)kill
不会执行您期望它执行的操作。看.DEFAULT
- 在命令行上调用
,执行第一个目标。因为您的第一个目标是write\u foo,所以只执行write\u foomake
make do\u it
,所有目标都将被执行(当前目录中将显示3个文件)
问题更新后添加:
根据,在
的先决条件中包含中间目标。珍贵
特殊目标可防止删除它。否,我希望在执行后删除它们,因此珍贵
对我没有帮助。我只需要在删除文件之前用这个文件执行几个命令。@ WeleHeavy是否考虑将它们保存在<代码>中?宝贵的< /代码>,然后在做了你想做的事情之后手动删除它们?不,你今天不能这样做。实际上make甚至不运行rm
命令,它只是打印rm
,但在内部它使用unlink()
系统调用来删除文件。