Makefile中对变量赋值有几种方式
= 递归展开变量
:= 直接展开变量
这两个中文名称,不是很好理解。
①递归展开变量 =
做成下面的Makefile
然后执行
$make debug
#val2被定义为:递归展开变量 val1=5 val2=$(val1) val1=6 debug: @echo "val2="$(val2) |
输出结果
$val2=6
②直接展开变量 :=
#val2被定义为:直接展开变量 val1=5 val2:=$(val1) val1=6 debug: @echo "val2="$(val2) |
输出结果
$val2=5
※这样就比较好理解,"递归展开"和"直接展开"的区别了
另外,
操作符?= 定义的变量(条件赋值的赋值操作),属于递归展开变量。
#val2通过?=被定义 val1=5 val2?=$(val1) val1=6 debug: @echo "val2="$(val2) |
输出结果
$val2=6
阅读(1595) | 评论(0) | 转发(0) |