永发信息网

Makefile中的$是什么意思

答案:1  悬赏:70  手机版
解决时间 2021-01-23 02:56
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-01-22 02:46
Makefile中的$是什么意思
最佳答案
  • 五星知识达人网友:愁杀梦里人
  • 2021-01-22 03:35
在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢,区别大了。不要认为在makefile的规则的命令行中使用$var就是将makefile的变量和shell共享了,这里仅仅是读取makefile的变量然后扩展开,将其值作为参数传给了一个shell命令。而$$var是在访问一个shell命令内定义的变量,而非makefile的变量。此外,如果某规则有n个shell命令行构成,而相互之间没有用';'和'\'连接起来的话,就是相互之间没有关联的shell命令,相互之间也不能变量共享。看如下例子: makefile代码段1: VAR=3 target: prerequsite1 prerequsite2 echo $VAR (1) VAR=4 (2) echo $VAR (3) echo $$VAR (4) 在代码段1中,(1)的结果是3,显然makefile利用自己的变量将$VAR扩展成3之后传递给这个echo这个shell命令。 (2)中,是一个独立的shell命令自己第一了一个shell变量,名字也叫VAR,且其值为4,不会影响到makefile中的VAR。 (3)中,同(1),makefile中的变量VAR的值依然是3 (4)makefile将$$VAR先执行一次扩展得到如下shell命令: echo $VAR然后交给shell去解释执行,可是对于这个shell命令来说VAR是一个为定义的变量,因此输出的结果就是个空行。 makefile代码段2: VAR=3 target: prerequsite1 prerequsite2 echo $VAR;\ (1') VAR=4;\ (2') echo $VAR;\ (3') echo $$VAR (4') 在代码段2中,所有的shell命令都被连接起来了,那么执行的结果就有变化了: (1')结果同(1),$VAR被替换成了3 (2')结果同(2) (3')输出3,因为虽然shell中有VAR变量,可是makefile先要进行扩展,扩展的结果就是echo 3。 (4')输出4,因为makefile扩展结果为echo $VAR,而shell中已经有了变量VAR,且其值为4.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯