2013-06-18 21 views
5

我有一個相當大的autotools驅動的項目,它位於由許多子目錄組成的目錄樹中。它的目標是check(在每個子目錄以及主目錄中)執行大量自動化測試。 check目標是遞歸構建的。make:僅在單個目標的子目錄中禁用並行構建

構建以及並行測試(通過-j選項)可用於大多數目錄。然而,有一個目錄包含的測試在並行執行時(定時敏感性)不起作用,但在串行運行時通過。

現在的問題是:有沒有辦法強制make在這一個子目錄中連續構建check目標,同時並行構建其他所有內容?

+0

我能想到的唯一技巧是爲串行檢查插入錯誤的依賴關係。手冊中有一個[基本想法](http://www.gnu.org/software/automake/manual/automake.html#true)。 –

+0

爲什麼不通過使目標相互依賴來解決這個問題? – reinierpost

回答

1

如果我理解正確的話,那麼當你運行遞歸做出構建check目標,你可以只通過-j1明確,以確保它運行順序:

check: ; $(MAKE) -j1 ... 
+0

當我找到幾分鐘時,我會嘗試。 – arne

+0

這不起作用:這給了我警告:-jN強制在子圖片 –

+1

它絕對有效。是的,你會收到警告。但它不會同時運行作業。使用NOTPARALLEL更清潔如果您始終希望每次調用該makefile都不會並行運行(而不僅僅是調用特定目標的特定調用),並且可以更改makefile。如果其中一個或兩個都不正確,那麼NOTPARALLEL不太有用。 – MadScientist

6

添加到您的Makefile

.NOTPARALLEL:

請參閱GNU make here的文檔。