首页 文章

gnu make - 强制退出而不删除目标

提问于
浏览
0

我正在逐步验证我的构建输出,我希望能够在执行给定的配方后退出 .

如果原始配方是

$(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 回答

  • 1

    如果您要保留的文件是 intermediate 文件(未提及作为规则的目标或依赖关系 - 但可能通过模式规则隐含),则您需要使其成为 .PRECIOUS 的依赖关系 .

    否则,临时删除或注释掉我们在每个Makefile中放入的 .DELETE_ON_ERROR: 目标就足够了 .

相关问题