Makefile中变量赋值方法的区别

在Makfile中一共有4中赋值方法,形式分别如下:

 VAR = value
 VAR ?= value
 VAR := value
 VAR += value

= 递归展开赋值

赋值不是立即生效,要等到在使用变量VAR时才展开。若一个变量引用另外一个变量,两个变量定义的位置,谁在前谁在后没有任何关系,都能达到同样的效果。也是很容易出错的地方,例如:

SUBDIR=workspace
DIR=$(SUBDIR)
SUBDIR=/usr/local/
all:
    @echo $(DIR)

结果是:/usr/local/

:= 直接赋值

不会递归展开,若引用的变量不存在,就展开为空串

?= 条件赋值

如果变量没有初始化,就给它赋值

+= 追加赋值

在已有赋值后追加赋值


你可能感兴趣的:(makefile)