前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Makefile中:=, =, ?=和+=的含义

Makefile中:=, =, ?=和+=的含义

作者头像
看、未来
发布2022-05-06 15:12:24
1.2K0
发布2022-05-06 15:12:24
举报
文章被收录于专栏:CSDN搜“看,未来”

在Makefile语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等

那么这些赋值等号分别表示什么含义呢?

  1. “=” “=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用”=”进行赋值,变量的值是整个makefile中最后被指定的值。不太容易理解,举个例子如下:
代码语言:javascript
复制
VIR_A = A
VIR_B = $(VIR_A) B
VIR_A = AA

经过上面的赋值后,最后VIR_B的值是AA B,而不是A B。在make时,会把整个makefile展开,拉通决定变量的值

  1. “:=” 相比于前面“最普通”的”=”,”:=”就容易理解多了。”:=”就表示直接赋值,赋予当前位置的值。同样举个例子说明
代码语言:javascript
复制
VIR_A := A
VIR_B := $(VIR_A) B
VIR_A := AA

最后变量VIR_B的值是A B,即根据当前位置进行赋值。因此相比于”=”,”:=”才是真正意义上的直接赋值。

  1. “?=” “?=”表示如果该变量没有被赋值,则赋予等号后的值。举例:
代码语言:javascript
复制
VIR ?= new_value

如果VIR在之前没有被赋值,那么VIR的值就为new_value.

代码语言:javascript
复制
VIR := old_value
VIR ?= new_value

这种情况下,VIR的值就是old_value

  1. “+=” “+=”和平时写代码的理解是一样的,表示将等号后面的值添加到前面的变量上
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档