原文地址:Makefile文件中,两个\$的变量变量\$\$Xxx 与一个\$的变量 \$Xxx的区别
Makefile 中的变量引用
在 Makefile
中,$
符号用于变量替换,但它的使用方式有一些细微的区别:
单个 $
符号($Xxx
)
- 用途:用于引用
Makefile
中定义的变量。 - 用法:
$
后面可以跟变量名,通常用括号或花括号括起来以明确变量名的边界。 示例:
VAR = value all: echo $(VAR)
在这个例子中,
$(VAR)
会被替换为value
。
双 $ 符号(\$\$Xxx)
- 用途:用于在 Makefile 中传递给 shell 的命令中引用 shell 变量。
- 用法:\$\$ 会被 make 解析为单个\$,从而在 shell 中使用。
示例:
all: echo \$\$PATH
在这个例子中,
$$PATH
会被 make 解析为$PATH
,从而在 shell 中输出环境变量 PATH 的值。
具体区别
$Xxx
:用于 Makefile 变量替换。make 会在执行命令之前将其替换为变量的值。\$\$Xxx
:用于传递给 shell 的命令中引用 shell 变量。make 会将\$\$
转换为$
,从而在 shell 中使用。
例子
假设你有一个 Makefile 如下:
VAR = Hello
all:
# 使用 Makefile 变量
echo $(VAR)
# 使用 shell 变量
echo \$\$USER
echo $(VAR)
:make 会将$(VAR)
替换为Hello
,然后执行echo Hello
。echo \$\$USER
:make 会将\$\$USER
转换为$USER
,然后 shell 会替换$USER
为当前用户的用户名。
总结
- 使用
$
来引用 Makefile 中的变量。 - 使用
\$\$
来引用 shell 中的变量,以确保在传递给 shell 时保留单个$
符号。