Makefile中“=”、“:=”、“?=”、“+=”的区别

“?=” 表示如果变量没被赋值过,则为其赋值
“+=” 表示为变量添加等号后面的值

“=”与“:=”都是赋值操作,但二者有区别:

“=”
通常,make命令会将整个Makefile展开后,再决定变量的值,即变量的值将会是整个makefile中最后被指定的值。

而“:=”表示变量在赋值时就先设置为该值,而不是整个makefile展开后的最终值,后面如果再有赋值,则会将前面的赋值覆盖,使用新的值。
例如:
x := “a”
y := $(x) “b”
x := “c”

则y的值为”a” “b”,而不是”c” “b”

————————————————————

原创文章,转载请注明: 转载自孙希栋的博客

本文链接地址: 《Makefile中“=”、“:=”、“?=”、“+=”的区别》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up