博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile中的变量和shell变量
阅读量:7052 次
发布时间:2019-06-28

本文共 1585 字,大约阅读时间需要 5 分钟。

我们在写makefile时 多多少少会用到shell脚本, 对于变量的在shell中的使用有一些要注意的细节。让我们从一个简单的makefile来看看。

注意makefile中一定要有一个目标,且一定要有一个终极目标,若想要有多个目标应该设立一个伪目标。如下:

all: hello hello2 hello3hello: hello.c    gcc ....hello2: hello2.c    gcc ...hello3: hello3.c    gcc ...
  • shell变量定义和使用:
NAME=hello #这里一定不要有空格 hello可以加上""或'' 若定义的值有空格 则要加上"" 或 ''echo $NAME #这里使用变量时 要加上$  也可以${
NAME} 但是不能$()这个表示执行里面的命令
  • makefile中的变量定义:
HHH=hello  #方式一ZZZ = hello #方式二all:    echo $HHH #这样输出并不能输出HHH的值   A    echo $ZZZ #同上    echo $(HHH) # 输出hello B    echo $(ZZZ) # 输出hello 这里可以看到有别与shell变量定义。    echo ${HHH} # 输出hello  C    echo ${ZZZ} # 输出hello    echo $$HHH # 输出空 #$$这种方式是shell中使用makefile中定义的变量 这是一个command line。     D     echo $$ZZZ # 输出空    if [ -n "${HHH}" ];then echo "OK";fi;  #这里正确输出OK   E    if [ -n "${ZZZ}" ];then echo "OK";fi; # 正确输出OK    if [ -n "$(HHH)" ];then echo "OK";fi; # 正确输出OK       H    if [ -n "$(ZZZ)" ];then echo "OK";fi; # 正确输出OK    if [ -n "$HHH" ];then echo "OK";fi; # 变量名不正确       J    if [ -n "$ZZZ" ];then echo "OK";fi; # 变量名不正确    if [ -n "$$ZZZ" ];then echo "OK";fi; #没有输出      K	if [ -n "$$HHH" ];then echo "OK";fi;#没有输出    if [ -n $$ZZZ ];then echo "OK";fi; #输出OK        L	if [ -n $$HHH ];then echo "OK";fi;#输出OK

我认为makefile的变量定义使用就像是c/c++中的宏的使用方式 只是替换而已

1. 情况A中: echo $HHH 是优先于第一个字符结合去找$H变量 但是这里没有H定义 所以A这种情况 就是 echo HH 会输出HH
2. 情况BC中:正确的使用方式
3. 情况D中:变量名变为$HHH 这样的变量名为空
4. EH 中: 正确
5. J中$HHH 变为 HH
6. K 因为没有定义$HHH这个变量
7. L 正确方式 与D的差别就是这句是shell D是command
以上是结合实际情况的个人理解

总结就是 makefile变量定义可以有空格, 使用变量时用$() 若在shell中使用makefile中定义的变量时,要使用$$ 并且一定不要使用“”和‘’。

 

转载于:https://www.cnblogs.com/MaAce/p/7755706.html

你可能感兴趣的文章
LINQ的ORM功能中对使用sp_executesql语句的存储过程的支持
查看>>
springMvc 的参数验证 BindingResult result 的使用
查看>>
hadoop主节点(NameNode)备份策略以及恢复方法
查看>>
fsync体会
查看>>
OpenCV 2.4.11 VS2012 Configuration
查看>>
快速排序
查看>>
【Unity】Collider随骨骼动画运动
查看>>
SVN 权限配置详细说明
查看>>
【SQL】在SQL Server中多表关联查询问题
查看>>
Elasticsearch 5.0 —— Head插件部署指南(Head目前支持5.0了!请不要看本篇文章了)...
查看>>
计算字符串相似度的简易算法
查看>>
24.4. 批量生成监控配置文件
查看>>
您知道这是微软什么时期的网页吗?!
查看>>
将不确定变为确定~真的是SqlDataReader引起的超时?
查看>>
TCP客户机-服务器
查看>>
Hibernate连接DB2的问题(已解决)
查看>>
I.MX6 dts 在哪里、怎么编译
查看>>
第 44 章 Chart 图表
查看>>
JQuery ztree 异步加载实践
查看>>
XOR算法的原理和实现
查看>>