【问题标题】:How does variable expands in makefile?变量如何在makefile中扩展?
【发布时间】:2021-03-04 17:57:03
【问题描述】:

在这个简单的 makefile 中:

var = foo

func = $(info $1 -> $($1) )

$(call func, var)

我希望 $($1) 扩展到 foo,但输出:

 var ->  

为什么?以及如何让它发挥作用?

【问题讨论】:

    标签: variables makefile gnu expansion


    【解决方案1】:

    不幸的是,make 对空格的处理不一致。一般来说,编写 makefile 时最好的经验法则是,您永远不应该在变量和函数中不需要的地方使用空格。

    这里的问题是$(call func, var)$1 设置为值“ var”(即包含空格)。在许多情况下,这不是问题,但在这种情况下,这意味着当您使用 $($1) 时,它会扩展为 $( var),这当然不是一个集合变量。

    如果删除空格:

    $(call func,var)
    

    它会起作用的。

    根据 make 通常 的规则,这不应该发生,因为 make 的正常规则是忽略 preceding 空格和 subsequent 空格被保留。但不幸的是,该规则似乎不适用于call

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多