2010-07-30 69 views
2

,如果我跑make這樣的:Makefile的目標取決於文件從環境變量

make VAR=dir 

是有辦法增加由VAR變量作爲目標依賴指向的位置?實際上,我需要在該目錄內定義一個文件作爲依賴項。

我一起去:

target: $(VAR)/file.txt 
    echo yes 

,但如果沒有定義的變量,則目標將明白/file.txt,這不是我想要的。我也想過創建一個虛假目標來檢查變量,其中test,但是每次都會執行虛假目標,因此target也會這樣。

任何解決方案?

回答

5

你還沒說你想要什麼樣的行爲,如果變量沒有定義,但是這可能是你想要什麼:

ifdef VAR 
target: $(VAR)/file.txt 
endif 

target: 
    echo yes 
    @echo and here are the dependencies: $^ 
+1

感謝,這是我需要的東西。實際上,我會使用'else'子句來封閉最後一個目標,這樣就不會抱怨重新定義目標。 – cd1 2010-08-03 15:15:21

+0

Make不會抱怨,如果你把第二部分放在'else'子句中,這個技巧將不起作用。嘗試一下。 – Beta 2010-08-03 15:32:34