我正在逐步验证我的构建输出,我希望能够在执行给定的配方后退出 .
如果原始配方是
$(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD)
$(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py $@
我希望能够在最后添加一行,就像这样
$(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD)
$(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py $@
some_command
和 some_command
应该只是停止执行makefile而不干扰配方的其余部分 .
如果我将 some_command
设置为 exit 1
,我会得到
../py/py.mk:269:目标'build-gnu / genhdr / mpversion.h'的配方失败make:* [build-gnu / genhdr / mpversion.h]错误1 make:*删除文件'build -gnu / genhdr / mpversion.h”
如果我将 some_command
设置为 $(error)
,则配方在 $(error)
之前不是't even executed even though it'
是否有这样的命令停止执行makefile但不删除目标?
UPDATE
我发现了这个hack:make .PRECIOUS依赖于目标并添加 exit 1
作为配方中的最后一行 .
1 回答
如果您要保留的文件是 intermediate 文件(未提及作为规则的目标或依赖关系 - 但可能通过模式规则隐含),则您需要使其成为
.PRECIOUS
的依赖关系 .否则,临时删除或注释掉我们在每个Makefile中放入的
.DELETE_ON_ERROR:
目标就足够了 .