Makefile中变量赋值方法的区别

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

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

= 递归展开赋值

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

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

结果是:/usr/local/code

:= 直接赋值

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

?= 条件赋值

若是变量没有初始化,就给它赋值class

+= 追加赋值

在已有赋值后追加赋值变量

相关文章
相关标签/搜索