为什么将可选的'='添加到gnu make 4的define指令中?

时间:2018-11-05 14:16:34

标签: gnu-make

查看Defining multi-line variables的Gnu make 4.2手册,我们看到一个示例:

define two-lines =
echo foo
echo $(bar)
endef

和评论

  

define指令在同一行后跟要定义的变量的名称和(可选)赋值运算符,仅此而已。

我曾多次加入可选的=,然后在使用Gnu make 3.81在另一台机器上构建时遇到(通常是细微的)问题。当然,运行3.81时不应该使用4.2语法!但是我发现这是一个容易犯的错误,特别是因为URL和1的内容都没有指出要记录的版本(您必须单击Up 2个级别才能看到该版本)。 / p>

那么,回到我的问题:为什么引入了可选的=

1 个答案:

答案 0 :(得分:2)

它允许您使用所有不同的赋值运算符创建宏。特别是它允许您使用:

define foo :=

获取简单扩展的变量,或

define foo ?=

获取可选分配的变量等。在此过程中,您可以使用(冗余)

define foo =

也是。