2011-04-11 101 views
1

當創建一個Makefile時,我試圖弄清楚(如果)我可以如何根據目標更改變量。基於Makefile中的目標的變量

因此就喜歡這樣的:

VER = $(if target=release then 1.0.0 elseif target=nightly then 20110411) 

nightly: 
    @@echo ${VER} >> version.txt 

release: 
    @@echo ${VER} >> version.txt 

回答

4

如果您make是GNU製作, Target-Specific Variable 是允許的。
例如,在你的問題的情況下,以下定義將符合 目的:

nightly: VER = 20110411 
release: VER = 1.0.0 

nightly: 
    @echo ${VER} 

release: 
    @echo ${VER} 

希望這有助於

+0

我一直得到這個錯誤你的方法'的Makefile:6:***命令開始第一個目標之前。 Stop.'數字是目標的行號 – 2011-04-11 19:49:39

+0

您的'make' GNU-make?如果是這樣,那麼這個版本是什麼?當我在GNU-make 3.80和3.81上測試時,上面的代碼工作了 。 如果你的'make'不是GNU-make,不幸的是答案可能不適用。 – 2011-04-11 20:43:21

+0

@Is Wisteria GNU Make 3.81 此程序爲i386-apple-darwin10.0構建 – 2011-04-11 21:40:44