![](/img/trans.png)
[英]How to read & print a file content ( some settings ) inside a makefile target?
[英]How to delete the target file in case of error in Makefile?
在以下示例中,我希望在發生錯誤的情況下刪除foo
。 不幸的是,它不起作用。
foo:
perl -e 'die()' > $@ || [rm $@ -a true]
怎么了
GNU make可以為您做到這一點。
特殊內置目標名稱 :
.DELETE_ON_ERROR
如果將
.DELETE_ON_ERROR
提及為makefile中任何位置的目標,則make會刪除規則的目標(如果它已更改並且其配方以非零退出狀態退出),就像接收到信號時一樣。
創建文件是非原子操作是一個普遍的問題。 並非總是可以在終止時刪除不完整或損壞的文件,例如,使用SIGKILL
或OOM殺手殺死該程序時。 換句話說,所有涉及刪除文件的解決方案都容易出錯。
強大的通用解決方案是:
例如:
foo:
perl -e 'die()' > $@~
mv --force $@~ $@
這對我有用...
foo:
@perl -e 'die()' > $@ || { echo "removing $@ because exit code was $${?}"; rm $@; }
Died at -e line 1.
removing foo because exit code was 255
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.