我对配方中的make变量和shell变量感到困惑 由于每行配方都被解释为shell,我可以进行shell变量赋值吗? 以下是示例:
.ONESHELL:
all:
param="hello"
echo $(param)
// --------------------
没有输出...
我知道我们可以将eval用于变量赋值,但它看起来像make变量
我怎样才能执行正常的shell变量赋值,我希望保存shell命令的返回值
感谢。
答案 0 :(得分:0)
$(param)
由GNU make扩展。要通过shell进行扩展,请执行$${param}
。 Using Variables in Recipes:
配方中的变量和函数引用与makefile中其他地方的引用具有相同的语法和语义。它们也有相同的引用规则:如果你想在你的食谱中出现一个美元符号,你必须加倍它('$$')。对于像默认shell这样的shell,它使用美元符号来引入变量,重要的是要清楚地记住你要引用的变量是make变量(使用单个美元符号)还是shell变量(使用两美元的迹象)。