Chinaunix首页 | 论坛 | 博客
  • 博客访问: 441104
  • 博文数量: 88
  • 博客积分: 2677
  • 博客等级: 少校
  • 技术积分: 893
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-13 08:01
文章分类

全部博文(88)

文章存档

2017年(3)

2016年(1)

2012年(4)

2011年(4)

2010年(57)

2009年(19)

我的朋友

分类: LINUX

2010-12-14 12:11:19

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

阅读(1525) | 评论(0) | 转发(0) |
0

上一篇:图形化前端 GDB

下一篇:makefile 转义符

给主人留下些什么吧!~~