云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

Makefile 等号傻傻分不清楚 := ?= += =的区别

jxf315 2025-07-06 13:26:33 教程文章 1 ℃

在Makefile中经常看到 = := ?= +=这几个赋值运算符, 有什么区别呢

  • = 是最基本的赋值
  • := 是覆盖之前的值
  • ?= 是如果没有被赋值过就赋予等号后面的值
  • += 是添加等号后面的值

?= 和 += 这个是一看就知道什么用处了, 但是= 和:= 就不明白了

  • “=”

make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

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

在上例中,y的值将会是 xyz bar ,而不是 foo bar 。

  • “:=”

“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。

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

在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。

最近发表
标签列表