差異我看了這個問題,我很驚訝,它不工作:GNU使多變量聲明
Why GNU Make canned recipe doesn't work?
所以我沒有嘗試過自己,得到了相同的結果。下面是一個例子生成文件:
define foo
bar
baz
endef
define bar =
foo
baz
endef
$(info foo: $(foo))
$(info bar: $(bar))
all:
下面是從運行它的輸出:
$ make
foo: bar
baz
bar:
make: Nothing to be done for `all'.
這裏發生了什麼? GNU make manual似乎表明這兩個變量聲明應該是相同的 - 我在這裏錯過了什麼?
編輯:
從手動,我指的是一些語錄:
define immediate deferred endef define immediate = deferred endef
^h ERE是定義一個罐裝配方的例子:
define run-yacc = yacc $(firstword $^) mv y.tab.c [email protected] endef
6.8 Defining Multi-Line Variables
...如果你願意的話,可以省略變量賦值運算符。如果省略,使假定它是「=」,並創建一個遞歸擴展變量...
正如你所看到的,罐裝配方部分明確使用=
情況。我正在使用GNU Make 3.81。
恰好碰到了這個確切同樣的問題,容易` - 升級; apt-get install make`告訴我,v3.81是最新的,所以我變得越來越富裕起來,非常感謝...非常感謝! – 2011-08-12 11:08:43