【发布时间】:2012-12-16 04:47:32
【问题描述】:
考虑一下这个小 Makefile:
test: var ?= foo
test:
echo $(var)
make 的文档说 ?= 分配了一个尚未被赋值的变量
之前分配(未定义)。
但如果通过命令行分配:
make var=1234
一些随机(ASCII,非ASCII,仅限空白)字符而不是1234 被打印到终端。
使用 = 而不是 ?= 可以按预期工作,但不能在我的
case,因为它覆盖了“继承的”,从调用 make 导出的分配。
此外,如果不使用基于目标但全局分配,则输出
正如预期的那样。
这些字符序列是从哪里来的?
在 linux gentoo (GNU make v3.82) 和 deb-wheezy (GNU make v3.81) 上测试。
感谢您的提示!
【问题讨论】:
-
我无法在 OSX 10.7.5 上使用 GNUMake 3.81 重现此问题。
-
var ?= foo在你的例子中是一个目标,它是一个错字吗? -
不是错字;条件赋值:gnu.org/software/make/manual/html_node/…
-
无法在 SUSE 上使用 Make 3.81 重现此问题。
标签: makefile variable-assignment