如何在食谱中使用多行变量?
file-name:multiple-line-variable
define foo =
echo welcome
endef
export foo
all:
echo $(foo)
我得到以下输出。但我希望“欢迎”打印。
$ make -f multiple-line-variable
echo
答案 0 :(得分:1)
SunEric的回答没有正确解释发生了什么。添加或不添加@
与您没有看到“欢迎”打印的原因完全无关。
您的原始示例无法按预期工作的原因是因为您正在阅读最新版GNU make(目前是GNU make 4.0)的GNU make手册,可能使用在线手册,但您正在使用一个更老的GNU版本。这不是一个好主意,因为手册中讨论的功能在您正在使用的GNU版本中不存在。
在这种情况下,变量定义的样式在名称后添加赋值运算符:
define foo =
...
在GNU make 3.82之前不可用。在之前的make版本中,此语法定义了一个名为foo =
的变量。因此,打印$(foo)
不会显示任何内容,因为未定义变量foo
。
GNU make将其用户手册作为发行版的一部分提供:您应该始终阅读您正在使用的GNU版本附带的手册版本,而不是其他版本。
此外,在任一方法中都不需要export
foo
变量,因为您在配方中使用了make语法,因此shell永远不会看到对{{1}的任何引用变量。
答案 1 :(得分:0)
试试这个,
define foo
welcome
endef
export foo
all:
@echo $(foo) // Change is here