GNU在配方

时间:2017-05-31 09:15:34

标签: shell variables makefile gnu recipe

我对配方中的make变量和shell变量感到困惑 由于每行配方都被解释为shell,我可以进行shell变量赋值吗? 以下是示例:

.ONESHELL:
all:
    param="hello"
    echo $(param)

// --------------------
没有输出...
我知道我们可以将eval用于变量赋值,但它看起来像make变量 我怎样才能执行正常的shell变量赋值,我希望保存shell命令的返回值 感谢。

1 个答案:

答案 0 :(得分:0)

$(param)由GNU make扩展。要通过shell进行扩展,请执行$${param}Using Variables in Recipes

  

配方中的变量和函数引用与makefile中其他地方的引用具有相同的语法和语义。它们也有相同的引用规则:如果你想在你的食谱中出现一个美元符号,你必须加倍它('$$')。对于像默认shell这样的shell,它使用美元符号来引入变量,重要的是要清楚地记住你要引用的变量是make变量(使用单个美元符号)还是shell变量(使用两美元的迹象)