变量的Makefile符号:$${var}${var}$(var)

变量的Makefile符号:$${var}${var}$(var),makefile,Makefile,$${var}${var}$var之间有什么区别 可以看出,$MAKE是圆括号,${TOPDIR}和${TOOLDIR}是括号,水果$${fruit}有双美元符号请参见 $X和${X}是等价的 $$扩展为$,因此$${X}扩展为${X},这是一个有用的技巧,可用于延迟变量的计算 foo: echo $SHELL_VARIABLE # fails echo $$SHELL_VARIABLE # works as intended 第一个命令失败,因为Make看到$S,对其求值并

$${var}${var}$var之间有什么区别

可以看出,$MAKE是圆括号,${TOPDIR}和${TOOLDIR}是括号,水果$${fruit}有双美元符号

请参见

$X和${X}是等价的

$$扩展为$,因此$${X}扩展为${X},这是一个有用的技巧,可用于延迟变量的计算

foo:
    echo $SHELL_VARIABLE  # fails
    echo $$SHELL_VARIABLE # works as intended
第一个命令失败,因为Make看到$S,对其求值并将其展开为零,除非您将S定义为Make变量,并将echo HELL_变量传递给shell。第二个命令起作用,因为Make将$$转换为$,并将echo$SHELL_变量传递给SHELL。这在和中也会出现,但这些都是高级主题。

请参阅

$X和${X}是等价的

$$扩展为$,因此$${X}扩展为${X},这是一个有用的技巧,可用于延迟变量的计算

foo:
    echo $SHELL_VARIABLE  # fails
    echo $$SHELL_VARIABLE # works as intended

第一个命令失败,因为Make看到$S,对其求值并将其展开为零,除非您将S定义为Make变量,并将echo HELL_变量传递给shell。第二个命令起作用,因为Make将$$转换为$,并将echo$SHELL_变量传递给SHELL。这也出现在和中,但这些都是高级主题。

hmm那么我不明白为什么我们要混合搭配$X和${X}为什么不选择一致性呢?如果功能上相同,是否有一些样式指南或其他东西可以区分何时使用?@ealeon:我总是使用括号。我不知道需要大括号的风格惯例。我主要使用大括号符号,但我可能是少数。一致性比使用哪一种符号更重要。请注意${var}与shell兼容。因此,您可以编写一个包含var1=foo、var2=${var1}bar等行的文本文件。。。并将其包含在Makefile中或从shell中获取。有时,用两种不同的工具将同一脚本解析为两种不同的语言是很方便的。@RenaudPacalet:有趣!我不知道。嗯,那我就不明白为什么我们要把$X和${X}混合搭配在一起。为什么不选择一致的呢?如果功能上相同,是否有一些样式指南或其他东西可以区分何时使用?@ealeon:我总是使用括号。我不知道需要大括号的风格惯例。我主要使用大括号符号,但我可能是少数。一致性比使用哪一种符号更重要。请注意${var}与shell兼容。因此,您可以编写一个包含var1=foo、var2=${var1}bar等行的文本文件。。。并将其包含在Makefile中或从shell中获取。有时,用两种不同的工具将同一脚本解析为两种不同的语言是很方便的。@RenaudPacalet:有趣!我不知道。