2013-08-22 74 views
0

我有一個需要根據環境變量的存在運行特定的規則。Makefile有條件的規則執行

test1: 
    -echo "test1" 

test2: 
    -echo "test2" 

run: 
    -echo "Running" 

所以,我的要求是,如果我做make run,那麼這兩個規則test1test2應該執行IF環境變量說RUN_ONLY_TEST1不上殼設置。但是,如果設置了此環境變量,則只應執行規則test1

可以有一個人請幫助我,如果這是可行的。這只是一個示例,我在原始的makefile中有很多命令,因此將if/else放在運行目標中需要大量的重複。

回答

1

正如你暗示RUN_ONLY_TEST1是說RUN_NOT_TEST2345的另一種方式。即你已經創建了一個消極的問題陳述,這有點難以實現,因爲這意味着很多排除。

我會去一個積極的態度,最容易被測試列表來運行:

TESTS = 1 2   # Can override this on command line or environment 

makepp然後你可以寫你的最後一個規則簡單地爲:

run: test$(TESTS) 

在使用gmake它會更加困難:

run: $(addprefix test,$(TESTS)) 

「運行」部分然後是錯誤的,因爲所有先決條件都已建立(即測試已經運行),直到達到此規則爲止。

+0

感謝您的建議。我會在我的主要項目中嘗試這個。 – sarbjit