![](/img/trans.png)
[英]Makefile project won't build after no changes to makefile (near identical make, works fine)
[英]Makefile error that works fine in console
我正在構建一個運行一系列測試的makefile,並將結果添加到文件中。 在makefile中,我將其設置為:
runtests:
rm -f results.txt
cardtest1 > results.txt
cardtest2 >> results.txt
cardtest3 >> results.txt
cardtest4 >> results.txt
unittest1 >> results.txt
unittest2 >> results.txt
unittest3 >> results.txt
unittest4 >> results.txt
現在,我可以按此順序或任何其他順序運行所有上述命令(前提是附加文件中存在results.txt文件),而不會出現問題。 但是,無論rm -f results.txt在makefile中時在運行什么測試之后,它總是會產生錯誤。
flip1 ~/src/dominion-base 161% make all
rm -f results.txt
cardtest1 > results1.txt
make: *** [runtests] Error 1
我已經修改了一個小時(最初都用>>開頭,但意識到附加顯然不會創建不存在的文件),我真的不確定我的makefile到底有什么問題。
錯誤:
make: *** [runtests] Error 1
意味着,雖然make以構建目標runtests
,其中一個命令,它與跑的錯誤代碼退出1
。 在POSIX(和make)中,任何非0的退出代碼都被視為失敗; 只有0表示命令成功。
因此,make將檢查它調用的程序的退出代碼(這是它必須繼續執行的唯一操作),如果它不為0,則假定命令失敗,並停止構建。
在上面,我想說您的程序cardtest1
退出時的退出代碼為1。您可以通過運行(從Shell命令行)進行測試:
cardtest1
echo $?
因為shell將剛完成的程序的退出代碼放入shell變量$?
。 如果它不為0,則需要修改cardtest1
程序以確保正確設置了退出代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.