Java教程

Makefile中的3个赋值符号“=”“:=”“?=”和一个追加符号"+="

本文主要是介绍Makefile中的3个赋值符号“=”“:=”“?=”和一个追加符号"+=",对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、首先学习Makefile需要明确一个概念:

make 命令会为 Makefile 中的每个以 TAB 开始的命令创建一个 Shell 进程去执行。

2、赋值符号“=”

代码:

name = maykolo

curname = $(name)

name = len

print:

  @echo curname = $(curname)

输入make后,结果:

 

得到结论:

赋值符号“=”,是将最后一次的结果赋值给“name” 变量。

 

3、赋值符号“:=”

代码;

name = maykolo

curname := $(name)

name = len

print:

  @echo curname = $(curname)

输入make后,结果:

 

得到结论:

赋值符号“:=”,不会使用后面定义的变量,使用距离引用变量的最新一次的变量结果。看如下:

name = maykolo

name = hanxiaojie

curname := $(name)

name = len

print:

  @echo curname = $(curname)

结果:

 

4、赋值符号“?=”

代码:

name = maykolo

curname ?= $(name)

name = len

print:

  @echo curname = $(curname)

输入make后:

 

得到结论:

如果变量 curname 前面没有被赋值,那么此变量就是“ len”,如果前面已经赋过值了,那么就使用前面赋的值。估计有的人会在这块迷糊,看到认真的人,肯定能明白,不认真的人就会问为什么不是“maykolo”。下面解答:

代码:

curname = hanxiaojie

name = maykolo

curname ?= $(name)

name = len

print:

  @echo curname = $(curname)

输入make后:

 

结论;仔细看我前面的话,是在判断“curname”变量而不是在判断“name”变量。第一次的那个代码相对于先使用赋值符“=”符号,给curname赋值len,后面判断前面有没有赋值,那前面已经赋值过了,就肯定是得到的结果是len。如果还是不理解,多添加几个变量自己多体会体会。

5、“+=” 这是一个变量追加符号.

Makefile 中的变量是字符串,有时候我们需要给前面已经定义好的变量添加一些字符串进去,此时就要使用到符号“ +=”,比如如下所示代码:

name = good

print:

  @echo $(name)

结果:

 

然后使用追加符:

name = good

name += nice

print:

@echo $(name)

结果:

 

 

这篇关于Makefile中的3个赋值符号“=”“:=”“?=”和一个追加符号"+="的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!