2013-08-26 103 views
-1

我想如果一個特定的環境變量設置其他運行中的默認規則來運行特定規則的Makefile沒有設定目標。例如,如果未設置環境變量MYTARGETS1,我想運行test1 and test2。但是與下面的代碼,總是test1規則是,當我使用make run命令運行。基於環境變量的值

MYTARGETS1 ?= True 

ifeq (${MYTARGETS1},True) 
MYTARGETS = test1 test2 
else 
MYTARGETS = test1 
endif 

test1: 
    echo "test1" 

test2: 
    echo "test2" 

run: common $(MYTARGETS) 

common: 
    echo "common" 
+0

爲什麼downvote我建議?這是我的要求,我知道一種解決方案可能是使用'MYTARGETS'作爲env並通過規則運行,但我不想那樣! – sarbjit

回答

2

代碼中有一個小錯誤。第一行應該是MYTARGETS1 ?= false或只是MYTARGETS1 ?=因爲?=被稱爲有條件分配意味着如果該變量尚未設置,設置它,不管你在這裏分配。隨着電流的變化,如果你通過MYTARGETS1make那麼makefile文件將致力於根據您的要求

make MYTARGETS1=true 
+0

我只能在我的實際代碼中將此makefile作爲'make run'運行。這只是一個例子 – sarbjit

+0

然後你最好刪除第一行本身。 –

+0

是的,它的工作 – sarbjit