2017-10-12 248 views
0

我正在逐步驗證我的編譯輸出,並希望能夠在給定配方執行後退出。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在配方中的最後一行。

回答

1

如果您想保留文件是中間文件(沒有提到作爲目標或規則的依賴 - 但通過圖案規則可能隱含的),那麼你就需要使它的.PRECIOUS的依賴。

否則,應該暫時刪除或註釋掉我們都放在每個Makefile中的.DELETE_ON_ERROR:目標。