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为未定义的变量。
“shell命令”(注意这里的shell命令的说法)中的var明明已经定义了,为什么是未定义呢?
原因:在Makefile的规则命令,如果相互之间没有使用';\'连接起来的话,相互之间是不能共享变量的。(执行过去就过去了)
修改示例代码,使用';\'连接shell规则命令行。
var=3 # a
target:
echo $(var);\ # b
var=4;\ # c
echo $(var);\ # d
echo $$var # e
$$var
指令中定义的变量。
参考链接: