原文地址:
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 时保留单个
    $
    符号。

标签: none

添加新评论