Makefile中 = := ?= +=的使用

首先来看一段测试代码

x = foo
y = $(x)bar
z := $(x)bar
x = xyz
y ?= $(z)bar
x += ijk

target:
	@echo    $(x)
	@echo =  $(y)
	@echo ?= $(y)
	@echo := $(z)

输出结果:

xyz ijk			#x
:= foobar		#z
?= xyz ijkbar		#y
= xyz ijkbar		#y
  • 可以看到,x经过三次赋值变为了xyz ijk
  • +=的含义显而易见,将右值增加到左边的变量基础上。空格是自动添加的。
  • =的含义是在右值在遍历整个Makefile,完全展开后再赋值给左边的变量。
  • ?=的含义是如果左值未被赋值过,则将右值赋值给它,可见这里y不会再被赋值一次。
  • :=的含义是将右值当前的值赋值给左值,不会遍历Makefile获取右值的最终值。

猜你喜欢

转载自blog.csdn.net/FJDJFKDJFKDJFKD/article/details/83090568
今日推荐