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 时保留单个$
符号。
随机推荐
- 多校A层冲刺NOIP2024模拟赛05
T1.好数(number) 签到题 把选三个数相加拆为选择一个数,然后看前面有没有能用两个数组合出答案. $ O(n^2) $ . 码( #include<bits/stdc++.h> u ...
- CSP模拟 小 trick 总结 (持续施工中)
虽然这篇博客来的有点晚,但还是写了,欢迎dalao补充( (很杂,建议先浏览目录) 1.分块.莫队有关: \(\color{brown}(1)一个真正的回滚莫队(感谢\ Qyun\ 的讲解):\) $ ...
- Java 当中使用 “google.zxing ”开源项目 和 “github 的 qrcode-plugin” 开源项目 生成二维码
Java 当中使用 "google.zxing "开源项目 和 "github 的 qrcode-plugin" 开源项目 生成二维码 @ 目录 Java 当中 ...
- rsa原理及其应用
rsa算法 0x01 原理 1.1 相关概念 RSA(Rivest-Shamir-Adleman)加密算法是一种基于数论的非实时加密算法,广泛用于安全通信.RSA算法的核心依赖于大整数分解的困难性 1 ...
- 分布式应用架构的发展演变RPC
什么是分布式系统? <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统",分布式系统(distributed s ...
- Discuz7.2 faq.php页面注入漏洞分析
由于discuz在全局会对GET数组进行addslashes转义,导致该漏洞的产生. 参数问题存在于faq.php的grouppermission函数中. 具体细节访问:网易博客siberia h ...
- 初识GO语言--函数
- 【2024.09.15】NOIP2024 赛前集训(2)
[2024.09.15]NOIP2024 赛前集训(2) A 最大的难点戏剧性地变成了二叉搜索树是什么. 先根据已知序列把二叉树建出来,忘了二叉搜索树的移步 二叉搜索树 & 平衡树 - OI ...
- DDCA —— 缓存(Cache):缓存体系结构、缓存操作
1. 存储器层次(The Memory Hierarchy) 1.1 现代系统中的存储器 其中包括L1.L2.L3和DRAM 1.2 存储器的局限 理想存储器的需求如下: 零延迟 容量无限 零成本 带 ...
- 精选2款C#/.NET开源且功能强大的网络通信框架
前言 今天大姚给分享2个C#/.NET开源且功能强大的网络通信框架,希望可以帮助到有需要的同学. NetCoreServer NetCoreServer是一个.NET开源.免费(MIT License ...