Makefile文件中赋值符号“=”、“:=”、“?=”、“+=”的区别

前言

本文分别讲述了Makefile文件中几种赋值符号。

平台:Ubuntu 18.04.6 LTS
make:GNU Make 4.1
GCC: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)

= 符号

在这里插入图片描述

由上图可知,在Makefile文件中,若是使用“=”符号对同一个变量进行多次赋值,每一次的赋值会覆盖上一次的数值。


:= 符号

在这里插入图片描述
再看:
在这里插入图片描述

由上图可知,在使用赋值符号“:=”的时候,只将该位置之前定义的数值赋值给变量,该位置之后的重新定义的数值也不再影响到“:=”的赋值结果。


?= 符号

在这里插入图片描述
由上图可知,符号“?=”在赋值之前,先检查当前位置之前,当前被赋值的变量是否已经赋过值,若没有,则执行当前的赋值语句;若当前位置之前,已经赋过值,即使该值为“empty”,当前的“?=”语句也不会再对其进行赋值了。

另外,看符号“?=”,先有一个“?”再接"=",是不是也可以理解为“先判断在赋值”呢!


+= 符号

在这里插入图片描述

该赋值符号为追加,若变量之前没有赋值,则直接赋值给变量;若变量已经有初始值,则将新的值追加上去,但是注意上图黄色箭头,追加值与原值之间有一个空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值