GNU Make:使用`define var =`时无输出

时间:2018-06-29 16:50:59

标签: variables makefile

代码段1:

define HELP_TEXT
This is the help text.
endef

.PHONY: help
help:
      @echo $(HELP_TEXT)

测试:

$ make help
This is the help text.
$

代码段2:

define HELP_TEXT =
This is the help text.
endef

.PHONY: help
help:
      @echo $(HELP_TEXT)

测试:

$ make help

$

这是怎么回事?根据文档,这两种语法之间的行为应该没有区别。

注意:我的GNU Make版本是3.81。

1 个答案:

答案 0 :(得分:1)

版本3.82(2010年7月28日)的NEWS文件提到了这一点:

  
      
  • define make指令现在允许在变量名称后使用变量赋值运算符,以允许简单,有条件或附加多行变量赋值。
  •   

因此,它只是GNU make 3.81中不存在的功能。实际上,在较早的make版本中,该变量称为HELP_TEXT =,如果您尝试执行此操作,则可以看到该变量:

define HELP_TEXT =
This is the help text.
endef

.PHONY: help
help:
    @echo $(HELP_TEXT =)