Makefile 变量定义

变量定义解析的规则如下:

1.  IMMEDIATE = DEFERRED   立即展开

a)        其优点是:

这种类型变量在定义时,可以引用其它的之前没有定义的变量(可能在后续部分定义,或者是通过make的命令行选项传递的变量)

b)       其缺点是:

                        i.             使用此风格的变量定义,可能会由于出现变量的递归定义而导致make陷入到无限的变量展开过程中,最终使make执行失败。

                      ii.             这种风格的变量定义中如果使用了函数,那么包含在变量值中的函数总会在变量被引用的地方执行(变量被展开时)。

 

2.  IMMEDIATE ?= DEFERRED  延后展开,如果该变量之前没有被定义过,那么对该变量赋值,如果该变量先前被定义过,那么这条语将什么也不做。

 

3.  IMMEDIATE := IMMEDIATE  立即展开

 

 

4.  IMMEDIATE += DEFERRED or IMMEDIATE  追加变量的内容,何时展开视具体情况而定定,详细如下

define IMMEDIATE

DEFERRED

Endef

当变量使用追加符(+=)时,如果此前这个变量是一个简单变量(使用 :=定义的)则认为它是立即展开的,其它情况时都被认为是“延后”展开的变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值