差异我看了这个问题,我很惊讶,它不工作: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