簡體   English   中英

在控制台中正常工作的Makefile錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM