2013-02-14 106 views
1

我有一個生成文件,運行一組涉及各種文件的測試,並將結果寫入日誌文件。是否可以編寫makefile,以便在處理完文件中的所有其他目標後運行同一組shell命令,而不管發生的錯誤如何。我知道我可以使用shell腳本來調用makefile,然後使用shell命令,但是我想知道是否可以從makefile文件本身做到這一點,而不使用像make print這樣的僞目標(例如, 。如何在編譯完文件中的所有目標後編寫makefile以運行shell命令?

回答

2

你可以嘗試這樣的事:

.PHONY: test1 test2 test3 finale 

    all: finale 

    finale: test1 test2 test3 

    test1: 
     - exit 1 

    test2: 
     - exit 2 

    test3: 
     - exit 3 

    finale: 
      echo "And the winner is..." 

你使你的腳本,目標「大結局」,依賴於其他目標,並使用「 - 」運營商忽略不回零代碼來自測試。

+0

任何方式來「捕捉」而不是忽略返回代碼,所以我們可以退出與測試錯誤代碼的結局? – Kaos 2016-04-15 09:01:25

+0

@Kaos您可以使用http://stackoverflow.com/questions/11157083/makefile-output-and-exitcode-to-variable中的解決方案。然而,使用這個解決方案意味着你在評​​估目標依賴關係之前運行所有的測試*實質上是將Makefile轉換爲Bash腳本。如果要保留Makefile依賴項評估功能,那麼當您在Makefile目標配方中執行每個測試時,需要將每個測試的返回代碼寫入單獨的臨時文件,然後對最後一個目標中的結果或後Makefile完成執行。 – 2016-05-27 13:07:58

+0

謝謝。我結束了一個單行shell命令: ''' test:update-version build-tools ;; gradle test; RET = $$? ; cp -r app/build/reports $ {DIST_DIR};退出$$ ret ''' – Kaos 2016-06-01 08:50:20

相關問題