Makefile中的 =,:=,?=,+= 的差异

  在Makefile中常常遇见这几种等操作,总结一下具体区别。

 =  是最基本的赋值

:=  是用右值覆盖左值

?=  判断,如果左值没有被赋值过就赋以右值,否则,不做赋值动作

+= 在左值后面连接右值(用空格隔开)

  = 和 := 的语法作用是一样的,只不过在Makefile文件中起效的时间不同造成了它们功能上的差异。

 =  会等到Makefile文件整个展开之后才执行的操作。 

:=  则是在Makefile解析到它时就立即执行的操作。

example:

x = foo
y = $(x) bar
x = xyz

  y最后的值为:xyz bar

x := foo
y := $(x) bar
x := xyz

  y最后的值为:foo bar 

原文地址:https://www.cnblogs.com/Flychown/p/6651094.html