首页 > 其他 > 详细

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

时间:2021-06-09 21:39:45      阅读:26      评论:0      收藏:0      [点我收藏+]

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个赋值符号“=”“:=”“?=”和一个追加符号"+="

原文:https://www.cnblogs.com/liusanjian/p/14868080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!