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

简介: 在 `Makefile` 中,`\$` 用于变量替换,单个 `\$`(如 `\$Xxx`)引用 Makefile 变量,双 `\$`(如 `\$\$Xxx`)传递给 shell 引用环境变量。`\$Xxx` 替换为 Makefile 变量值,`\$\$Xxx` 保留为 shell 变量。

原文地址: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 时保留单个 $ 符号。
相关文章
|
存储 缓存 安全
【cmake 生成配置文件】CMake与现代C++:配置文件宏的深度探索与应用
【cmake 生成配置文件】CMake与现代C++:配置文件宏的深度探索与应用
614 0
|
25天前
|
人工智能 自然语言处理 文字识别
阿里云AI产品免费试用活动介绍:超30款AI产品和7000万大模型 tokens 免费体验
阿里云2026年面向产品新用户推出的AI免费试用活动,提供超30款AI产品和7000万大模型tokens免费体验,零成本构建AI应用。核心权益包括:通义千问3系列、Qwen3-Coder、万相-Image等150+款大模型免费使用,100+Agent模板开箱即用,PAI平台一键部署大模型,以及NLP自然语言处理、视觉智能等10余款产品最长12个月免费试用。
|
传感器 安全 内存技术
[UDS] --- RoutineCommunicationControl 0x31
[UDS] --- RoutineCommunicationControl 0x31
2419 1
|
6月前
|
缓存 监控 调度
阿里云 CDN 计费体系全解析:基础服务、增值服务与选型指南
在内容分发网络(CDN)领域,阿里云凭借全球节点覆盖与灵活的计费模式,成为个人开发者与企业用户的重要选择。其 CDN 服务计费分为基础服务与增值服务两部分,基础服务提供按流量计费、按带宽峰值计费、月结 95 带宽峰值计费三种核心模式,增值服务则根据功能使用情况单独计费。本文基于 今年最新官方文档与实测数据,从计费规则、价格详情、场景适配、成本优化等维度展开解析,为用户提供客观选型参考。
|
11月前
|
人工智能 运维 监控
聚焦“AI+运维”深度融合,龙蜥系统运维联盟 MeetUp 圆满结束
现场 40 多位开发者进行了深入的技术交流,探索 AI 与运维深度融合的未来路径。
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
Shell
Shell while 语法(: 死循环)
Shell while 语法(: 死循环)
606 0
|
监控 安全 iOS开发
|
前端开发 数据可视化 JavaScript
【五一创作】QML、Qt Quick /Qt中绘制圆形
【五一创作】QML、Qt Quick /Qt中绘制圆形
1382 0
|
算法 调度 开发者
FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)
FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)
2063 0