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

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


猜你喜欢

转载自blog.csdn.net/lcxhjg/article/details/80938798
今日推荐