代码之家  ›  专栏  ›  技术社区  ›  ABu

gnu make:使用“define var”时没有输出=`

  •  0
  • ABu  · 技术社区  · 6 年前

    代码段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制造版本是3.81。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Florian Weimer    6 年前

    3.82版(2010年7月28日)的新闻文件提到:

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

    所以这只是gnu make 3.81中没有的一个特性。实际上,在早期的make版本中,变量被调用 HELP_TEXT = ,可以看到,如果您尝试此操作:

    define HELP_TEXT =
    This is the help text.
    endef
    
    .PHONY: help
    help:
        @echo $(HELP_TEXT =)