makefile 赋值 =和:=

1541阅读 0评论2010-12-14 bo_00
分类:LINUX

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

上一篇:图形化前端 GDB
下一篇:makefile 转义符