gnu make-force exit不删除目标

问题描述:

我正在逐步验证我的编译输出,并希望能够在给定配方执行后退出。gnu make-force exit不删除目标

如果原来的配方是

$(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD) 
    $(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py [email protected] 

我希望能够在最后添加一行像这样

$(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD) 
    $(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py [email protected] 
    some_command 

some_command应该仅仅停止生成文件的执行而不会干扰配方的其余部分。

如果我设置some_commandexit 1,我得到

../py/py.mk:269:配方目标 '集结GNU/genhdr/mpversion.h' 失败化妆:* [集结GNU/genhdr/mpversion.h]错误1化妆:* 删除文件 '集结GNU/genhdr/mpversion.h'

如果我设置some_command$(error),配方更是连即使它在之前执行

是否有这样的命令,可以停止执行makefile,但不会删除目标?

UPDATE
我发现这个技巧:让.PRECIOUS取决于目标,并添加exit 1在配方中的最后一行。

如果您想保留文件是中间文件(没有提到作为目标或规则的依赖 - 但通过图案规则可能隐含的),那么你就需要使它的.PRECIOUS的依赖。

否则,应该暂时删除或注释掉我们都放在每个Makefile中的.DELETE_ON_ERROR:目标。