Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1321871
  • 博文数量: 482
  • 博客积分: 13297
  • 博客等级: 上将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-12 16:25
文章分类

全部博文(482)

文章存档

2012年(9)

2011年(407)

2010年(66)

分类: 嵌入式

2011-01-14 15:17:48

Makefile中,对变量的赋值,有好几种方式,它们的意义、使用的场合都各不相同,初学者往往比较迷惑。这里对它们的用法简要介绍一下。

递归展开赋值,这是默认的赋值方式。Makefile是两遍解析的,若一个变量引用另外一个变量,两个变量定义的位置,谁在前谁在后没有任何关系,都能达到同样的效果。如:

SUBARCH=arm

ARCH = $(SUBARCH)

all:

        @echo $(ARCH)

输出:

arm

ARCH = $(SUBARCH)

SUBARCH=arm

all:

        @echo $(ARCH)

也输出:

arm

 

?=: 如果没有初始化该变量,就给它赋上默认值(第一次赋值才有效)。如

ARCH=arm

ARCH ?= i386

all:

        @echo $(ARCH)

输出:

arm

ARCH ?= i386

all:

        @echo $(ARCH)

输出:

i386

 

:= 直接赋值,不会递归展开,若引用的变量不存在,就展开为空串。如:

SUBARCH:=arm

ARCH := $(SUBARCH)

all:

        @echo $(ARCH)

输出:

arm

ARCH := $(SUBARCH)

SUBARCH:=arm

all:

        @echo $(ARCH)

输出:

(空串)

阅读(1205) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~