Makefile文件中,两个\$的变量变量\$\$Xxx 与一个\$的变量\ $Xxx的区别

原文地址: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 时保留单个 $ 符号。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。