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

随机推荐

  1. druid连接池报错:sql injection violation, multi-statement not allow

    druid连接池报错:sql injection violation, multi-statement not allow 需要配置druid的 multi-statement-allow属性为tru ...

  2. 查找大量时序遥感文件缺失、不连贯的成像日期:Python代码

      本文介绍批量下载大量多时相的遥感影像文件后,基于Python语言与每一景遥感影像文件的文件名,对这些已下载的影像文件加以缺失情况的核对,并自动统计.列出未下载影像所对应的时相的方法.   批量下载 ...

  3. 自学PHP笔记(一) PHP语法

    本文转发来自:https://blog.csdn.net/KH_FC/article/details/115407577 PHP基本语法 php使用一对特殊的标记包含php代码,与HTML代码混在一起 ...

  4. CSS动画效果(鼠标滑过按钮动画)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa5SXiaicFfsrcric7TJmGO6YddqC4wFPdM7PGzPHuFgvtDS7M ...

  5. node.js 安装过程(绿色免安装版)

    20220908_node.js 安装过程(绿色免安装版) 1.下载 下载一个长期支持(LTS)版本:https://nodejs.org/en/download/ 我选择绿色免安装版 2.解压 将下 ...

  6. 3.16 Linux删除文件或目录(rm命令)

    当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理. rm 是强大的删除命令,它可以永久性地删除文 ...

  7. 在Keil中使用ST-LINK烧录STM32程序指南

    前言 之前玩STM32都是用J-LINK烧录程序,不仅便捷,而且烧录的速度比用串口快好多. 最近我接了几个32单片机的毕设单子,便买了几块C8T6的最小系统板用来开发.最初我还是用J-LINK烧录C8 ...

  8. .NET斗鱼直播弹幕客户端(上)

    现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎.斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆.看到有不少主播接入弹幕语音播报器.弹幕点歌等模块,这都需要首先连 ...

  9. CF2030E MEXimize the Score 题解

    题面 假设我们将数组 \(b\) 中的元素分割成任意多个 \(k\) 的非空多集 \(S_1, S_2, \ldots, S_k\) ,其中 \(k\) 是一个任意的正整数.定义 \(b\) 的分值为 ...

  10. Yii2之model

    记录model常用方法 between: $model->andFilterWhere(['between','apply_time',$startTime,$endTime])