Makefile中的$和$$
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
在linux的Makefile中,经常会见到$var和$$var的形式。下面就这两种表示方法的区别进行简单的概述。
在Makefile中的规则命令行中:
$var:将Makefile中的变量var的值,传给shell命令。
$$var:访问shell命令中定义的变量var。
经典示例代码如下所示:
var=3 # a
target:
echo $(var) # b
var=4 # c
echo $(var) # d
echo $$var # e
a:定义Makefile中的变量var,值为3
b:打印Makefile中的变量,值为3
c:定义shell命令中的变量var,值为4,Makefile的变量var不受影响
d:打印Makefile中的变量,值为3
原因:在Makefile的规则命令,如果相互之间没有使用';\'连接起来的话,相互之间是不能共享变量的。
修改示例代码,使用';\'连接shell规则命令行。
var=3 # a
target:
echo $(var);\ # b
var=4;\ # c
echo $(var);\ # d
echo $$var # e
此时,b、d、e行的输出结果分别为3、3、4,符合用户的预期。
另外,在Makefile中,$$还被用来做二次扩展,即SECONDEXPANSION。
使用时,必须在最前面加上一行:
.SECONDEXPANSION # 使用二次扩展必须添加此行
关于二次扩展,看了好几个博客,还是未能深刻理解,有待后续研究。
请各位看官,不吝赐教。
在Makefile中的规则命令行中:
$var:将Makefile中的变量var的值,传给shell命令。
$$var:访问shell命令中定义的变量var。
经典示例代码如下所示:
var=3 # a
target:
echo $(var) # b
var=4 # c
echo $(var) # d
echo $$var # e
a:定义Makefile中的变量var,值为3
b:打印Makefile中的变量,值为3
c:定义shell命令中的变量var,值为4,Makefile的变量var不受影响
d:打印Makefile中的变量,值为3
e:打印shell命令中的变量。此时var为未定义的变量。
原因:在Makefile的规则命令,如果相互之间没有使用';\'连接起来的话,相互之间是不能共享变量的。
修改示例代码,使用';\'连接shell规则命令行。
var=3 # a
target:
echo $(var);\ # b
var=4;\ # c
echo $(var);\ # d
echo $$var # e
此时,b、d、e行的输出结果分别为3、3、4,符合用户的预期。
另外,在Makefile中,$$还被用来做二次扩展,即SECONDEXPANSION。
使用时,必须在最前面加上一行:
.SECONDEXPANSION # 使用二次扩展必须添加此行
关于二次扩展,看了好几个博客,还是未能深刻理解,有待后续研究。
请各位看官,不吝赐教。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献3条内容
所有评论(0)