首页 > 其他分享 >Makefile中的+=、:=、?=

Makefile中的+=、:=、?=

时间:2023-08-06 10:11:13浏览次数:14  
标签:AA 变量 Makefile value VIR new 赋值

1.=

“=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用”=”进行赋值,变量的值是整个makefile中最后被指定的值。不太容易理解,举个例子如下:

VIR_A = A
VIR_B = $(VIR_A) B
VIR_A = AA

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

2.:=

相比于前面“最普通”的”=”,”:=”就容易理解多了。”:=”就表示直接赋值,赋予当前位置的值。同样举个例子说明

VIR_A := A
VIR_B := $(VIR_A) B
VIR_A := AA

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

3.?=

“?=”表示如果该变量没有被赋值,则赋予等号后的值。举例:

VIR ?= new_value

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

VIR := old_value
VIR ?= new_value

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

4.+=

“+=”和平时写代码的理解是一样的,表示将等号后面的值添加到前面的变量上

标签:AA,变量,Makefile,value,VIR,new,赋值
From: https://www.cnblogs.com/Icer-newer/p/17609119.html

相关文章

  • 小白终于解决了在学习Go中不知道Makefile是什么的难题
    如何在Go中使用Makefile1.Makefile是什么 Makefile是一种构建工具,用于在项目中定义和执行一系列命令。它通常包含了一些规则和目标,用于编译、测试、运行和清理项目。2.Makefile可以用于哪些语言的构建过程Makefile最初是为了C程序的构建而设计的,但由于其简洁和灵活的特性,在......
  • 6.2 U-boot 顶层 Makefile
    一、U-boot工程目录分析  如果要分析uboot源码,首先要将uboot源码进行编译,编译需要在Ubuntu进行,把uboot文件放在一个目录下。编译完成后的文件是这样:我们需要看的文件夹如下。1.arch文件夹  从上图可以看出有很多架构,比如arm、m68k、x86等,我们现在用的是ARM芯......
  • 关于Makefile出现E325: ATTENTION报错
    前言对于新手使用Makefile,有时候使用vi命令打开Makefile会出现E325:ATTENTION报错,而只要出现了一次,之后每次使用vi命令打开相同的Makefile都会出现这个报错。原因目前我发现出现这种bug的原因有两个,还有其他可能触发这种问题的可以在评论区留言。原因一编辑文件......
  • 正点原子Ubuntu入门014---Makefile基本语法
    一、Makefile规则格式目标……:依赖文件集合(Tab键)命令1(Tab键)命令2(Tab键)命令3……  先判断依赖文件是否存在,存在才依次运行命令 main:main.oinput.ocalcu.ogcc-omainmain.oinput.ocalcu.omain.o:main.cgcc-cmain.cinput.o:input.c......
  • QT jom: Makefile [debug] Error
    电脑上原本安装有QT5.15.0+VS2015+VS2008QtCreator正常使用安装vs2019后报错jom:Makefile[debug]Error1jom:Makefile[debug]Error2lnk1158:cannotrunrc.exe解决方法:找到rc.exe路径(C:\ProgramFiles(x86)\WindowsKits\8.1\bin\x64),添加到环境变量,重启QT......
  • Makefile:162:recipe for target ‘xxx.o‘ failed!
    Q:使用makefile对工程进行编译的时候,出现指定报错:Makefile:162:recipefortarget‘xxx.o‘failed!A:该问题报错的意思是缺少依赖。根本问题是由于某个错误,导致过程文件xxx.o无法正常编译成功(makefile中最终目标文件的编译需要依赖过程目标文件xxx.o,而过程目标文件xxx.......
  • VCS 仿真脚本makefile样例
    详细的参数介绍参考下面的博客https://www.cnblogs.com/csjt/p/15581396.html自己的makefile,注意 SEED=`date+%N`//随机种子的定义取时间SIM_COV=-cmline+cond+fsm+tgl+branch//代码覆盖率采样的定义 TESTLIST=ahb_mst_burstahb_mst_single_read32ahb_......
  • 第009课 gcc和arm-linux-gcc和Makefile
    第001节_gcc编译器1_gcc常用选项__gcc编译过程详解gcc的使用方法gcc[选项]文件名gcc常用选项选项功能-v查看gcc编译器的版本,显示gcc执行时的详细过程-o指定输出文件名为file,这个名称不能跟源文件名同名-E只预处理,不会编译、汇编、链接t-S只编译,不会汇编、链接-c编译和汇编,不会链......
  • 一个简单的makefile文件尝试
      SHARED_CFLAGS=-fPIC-sharedSHARED_SRC=calac_level.cppcalac_level.hBIN_SRC=main.cppSHARED_PATH=-L./-lcalac_levelBIN_CFLAGS=-Wl,-rpath,./-gCC_VERSION=-std=c++11ECHO_RED_COLOR=\033[31mECHO_END=\033[0mLIB_TARGET=libcalac_level.soBIN_TARG......
  • 用CMake 替换 Makefile
    原文:https://blog.csdn.net/love131452098/article/details/116241448CMake实质上是用于生成Makefile的工具,现在越来越多开源的项目,在项目的编译框架上使用CMake替换Makefile.CMake相对于Makefile规则更加简单,重要的是CMake官方网站提供了较为友好的指南.CMake官方学习资......