在makefile中,经常能看到这种赋值方式:

MyNumber := 123

这种方式洋名叫做expansion assignment, 翻译过来叫扩展赋值, 我一般就叫冒号等号。这位同学就问了,那么它和普通的等号有啥不一样捏?咱们废话少说,直接看代码。

ANIMAL = FROG
VAR = "$(ANIMAL) DOG CAT"
ANIMAL = TIGER

test:
  echo $(VAR)

输出是:

    TIGER DOG CAT

再来看冒号等号的输出和上面有啥不一样:

ANIMAL := FROG
VAR := "$(ANIMAL) DOG CAT"
ANIMAL := TIGER

test:
    echo $(VAR)

输出时:

    FROG DOG CAT

看出来哪里不一样了吗?

没错,直接使用"=",变量在调用的时候一起展开,也就是在执行"echo $(VAR)"的时候;但是使用":="的时候,变量在赋值的时候就展开了。 

 

相关文章:

  • 2021-06-14
猜你喜欢
  • 2022-02-07
  • 2021-07-04
  • 2021-08-11
  • 2022-12-23
  • 2021-11-20
相关资源
相似解决方案