2013-10-05 100 views
0

定義錯誤狀態檢測功能在我makefile我有如何在Makefile中

run_sh:

echo"run script";\ 
toolk -run -tcl sequence.tcl | tee ./log/catch.log;\ 
$(call chck "./log/catch.log") 

我想從上面的日誌文件趕上error status=0消息和檢查,如果不是「0」退出形式創建文件。所以我寫了這個函數並在我的目標run_sh中調用它。

define chck 
log=$(1) 
STAT=`cat $(1) | grep "exit status=0"` 
ifneq ($(STAT),"exit status=0") 
$(error error in script) 
endif 
endef 

是正確的寫法,因爲我得到錯誤。

+0

makefile應該退出,並且一旦我們沒有來自先前目標的消息「退出狀態= 0」,就不應該執行任何其他目標在日誌文件中運行。 – kunal

回答

1

如何:

run_sh: 
    echo"run script"; toolk -run -tcl sequence.tcl | tee ./log/catch.log; 
    grep "error status=0" ./log/catch.log || exit 

編輯:

我沒有獲得gnumake的3.79.1,所以我們必須進行一些實驗。設置這條規則:

run_sh: 
    exit 

,並嘗試「讓run_sh」(「使」或「讓所有」或其他任何東西)。結果是什麼? (不要只說「它不工作」,向我們顯示輸出。)

+0

exit在makefile中不起作用。 – kunal

+0

同樣在上面提到的退出位置,我試着定義宏$(exit_s)定義exit_s $(腳本中的錯誤錯誤)endef。如果我執行使它退出,但沒有運行任何錯誤。 – kunal

+0

@kunal:'exit'在我的makefile中工作 - 我在發佈之前測試了這個。你使用什麼版本的Make? (另外,我知道爲什麼你的'exit_s'不起作用,但首先要做的事情。) – Beta