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 时保留单个$符号。
随机推荐
- druid连接池报错:sql injection violation, multi-statement not allow
druid连接池报错:sql injection violation, multi-statement not allow 需要配置druid的 multi-statement-allow属性为tru ...
- 查找大量时序遥感文件缺失、不连贯的成像日期:Python代码
本文介绍批量下载大量多时相的遥感影像文件后,基于Python语言与每一景遥感影像文件的文件名,对这些已下载的影像文件加以缺失情况的核对,并自动统计.列出未下载影像所对应的时相的方法. 批量下载 ...
- 自学PHP笔记(一) PHP语法
本文转发来自:https://blog.csdn.net/KH_FC/article/details/115407577 PHP基本语法 php使用一对特殊的标记包含php代码,与HTML代码混在一起 ...
- CSS动画效果(鼠标滑过按钮动画)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa5SXiaicFfsrcric7TJmGO6YddqC4wFPdM7PGzPHuFgvtDS7M ...
- node.js 安装过程(绿色免安装版)
20220908_node.js 安装过程(绿色免安装版) 1.下载 下载一个长期支持(LTS)版本:https://nodejs.org/en/download/ 我选择绿色免安装版 2.解压 将下 ...
- 3.16 Linux删除文件或目录(rm命令)
当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理. rm 是强大的删除命令,它可以永久性地删除文 ...
- 在Keil中使用ST-LINK烧录STM32程序指南
前言 之前玩STM32都是用J-LINK烧录程序,不仅便捷,而且烧录的速度比用串口快好多. 最近我接了几个32单片机的毕设单子,便买了几块C8T6的最小系统板用来开发.最初我还是用J-LINK烧录C8 ...
- .NET斗鱼直播弹幕客户端(上)
现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎.斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆.看到有不少主播接入弹幕语音播报器.弹幕点歌等模块,这都需要首先连 ...
- CF2030E MEXimize the Score 题解
题面 假设我们将数组 \(b\) 中的元素分割成任意多个 \(k\) 的非空多集 \(S_1, S_2, \ldots, S_k\) ,其中 \(k\) 是一个任意的正整数.定义 \(b\) 的分值为 ...
- Yii2之model
记录model常用方法 between: $model->andFilterWhere(['between','apply_time',$startTime,$endTime])