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 时保留单个$符号。
随机推荐
- 「模拟赛」CSP-S 模拟 11(T2 超详细)
比赛链接 A.玩水 (water) 签到.发现如果要找两条路径的话,能找到的充要条件是存在一个点的上方和左方的字母相同.(即使两条走过的点截然不同的路径也符合,这时终点会成为这个点). 即存在一个位置 ...
- 1553B总线测试仪
1553B总线测试仪-天津光达航电科技有限公司在测试模拟1553B总线的标准化测试仪器,该仪器是通过简单直观的管理工具实现复杂的MIL-STD-1553的测试及模拟功能,主要包括对MIL-STD-15 ...
- KubeSphere 社区双周报| 2024.07.19-08.01
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- KubeSphere 社区双周报 | OpenFunction 支持 Dapr 状态管理 | 2023.03.31-04.13
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 6 年 30k star,这个明星项目停止更新!
大家好,我是程序员鱼皮.就在昨天,GitHub 上一个知名的开源项目 Easy Excel 官宣停止更新,下面是官方原文: 公告中表示,Easy Excel 将进入维护模式,会进行 Bug 修复,但不 ...
- 【2024.09.27】NOIP2024 赛前集训-刷题训练(3)
[2024.09.27]NOIP2024 赛前集训-刷题训练(3) NOIP2018 提高组 铺设道路 算法一:模拟正常人铺路的过程,每次找区间的最小值,最小值就是本次填的高度,由于出现了若干个0位置 ...
- 30k的测试简历长这样,进来抄作业!
面试求职: 「面试试题小程序」,内容涵盖 测试基础.Linux操作系统.MySQL数据库.Web功能测试.接口测试.APPium移动端测试.Python知识.Selenium自动化测试相关.性能测试. ...
- 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现九
一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...
- K8S1.16.4+kubeflow1.0安装
K8S1.16.4+kubeflow1.0安装文档 一.简介 本文档编写原因:之前kubeflow1.0安装手册出现较多不可控问题,计划重新安排一个能够完全离线安装的K8S和kubeflow环境. 备 ...
- toFullScreen:全屏------exitFullscreen:退出全屏
toFullScreen:全屏 function toFullScreen(){ let elem = document.body; elem.webkitRequestFullScreen ? el ...