makefile中的=,:=和+=的理解

Makefile中=, :=, ?=和+=的含义 Makefile中=, :=, ?=和+=的含义1. 含义1.1 " = "1.2 " := "1.3 " ?= "1.4 " += "2. 实例   在Makefile语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等   那么这些赋值等号分别表示什么含义呢? 1. 含义 1.1 " = " “=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用“=”进行赋值,变量的值是整个makefile中最后被指定的值。不太容易理解,举个例子如下: VI 阅读详情

本文转自:http://blog.sina.com.cn/s/blog_7880f9830102w80f.html


经常有人分不清= 、:=和+=的区别  这里我总结下做下详细的分析:

首先你得清楚makefile的运行环境,因为我是linux系统,那么我得运行环境是shell

在Linux的shell里,shell只认识字符串,所以你就不要说整形什么的了。说值也不贴切。

先看+=是什么意思?

因为shell只认识字符串,所以这里应该不难联想到+=就是字符串连接的意思。相当于c语言的  strcat

举个例子:

x本来是  U;

      x += SB;

那么运行结果就是  x为USB;


接着理解:=和=

这个是很常用的,比=用得多

看下面的例子:

    x = sb;

    y = u$(x) 

    x = all

运行结果x 是all    y是uall

将=改成:=

 

    x := sb;

    y := u$(x) 

    x := all

运行结果x是all  y是usb

怎么样?有感觉了吧。这里=的话算$(x)的时候会一直搜索到文件最后,最后再赋值。

而:=则不会搜索后面的x值。也就是前面的是有效的而引用变量之后的就是无效的。

嵌入式 Makefile中:=与?=与+=与=的区别$@,$^,$<区别 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE     VRE = “HelloWorld!” else endif ifeq ($(OPT),define)     VRE ?=“Hello World! First!” endif ifeq 阅读详情

相关推荐

PLL锁相环性能上不去?可能是电荷泵的电流失配在捣鬼(附Jae-Shin Lee经典方案解析)

本文深入分析了PLL锁相环性能瓶颈的根源——电荷泵电流失配问题,详细解析了Current Mismatch和Current Deviation的区别及其对系统的影响。重点介绍了Jae-Shin Lee的多级电流镜技术,该方案通过运放构建虚拟短路和四级电流镜结构,显著降低了电流失配,使参考杂散改善15dB以上。文章还提供了从仿真到流片的完整优化流程,帮助工程师系统解决电荷泵性能问题。

weixin_30684743的博客 371

Makefile 中:= ?= += =的区别 和条件执行

一:在Makefile中经常看到obj-m := scull.o和KERNELDIR ?= /lib/modules/等不同的赋值方式,现在总结他们的区别: = 是最基本的赋值 := 是覆盖之前的值 ?= 是如果没有被赋值过就赋予等号后面的值 += 是添加等号后面的值 例: 1、“=” make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个m...

u011029104的专栏 1674

AI漫剧制作全流程零基础实操指南:从剧本到剪辑

AI漫剧是一种利用AI工具将剧本、分镜、出图、配音、剪辑整合为流水线的短视频内容形式。其技术原理基于文生图、图生图与文本转语音模型的组合,核心挑战在于角色一致性控制与分镜批量出图。这项技术大幅降低了视频制作门槛,使个人创作者无需演员和设备即可产出剧情向短内容,广泛应用于短视频平台的情景剧、玄幻、甜宠等题材。本文给出了一套零基础可照做的全流程实操方案,覆盖剧本提示词、分镜表、出图选型、配音合成与剪辑模板,帮助你快速跑通AI漫剧制作链路。

weixin_29048309的博客 529

Makefile中的?= := += =的区别

Makefile编写的时候会需要定义一些变量,这时候就需要用到“=”也就是C语言中的赋值符号来进行赋值,但有时候也会遇到":="和"?=",那么它们的区别是什么呢? 举个例子: 编写一个Makefile A = "equal" all: @echo $(A) 执行make命令,输出equal。这是普通的变量赋值,用了“=”。有点类似于宏的定义,但与宏定义又有一些区别,修

m7548352的博客 7404

在 PyCharm 中使用 Copilot

此外,要在 PyCharm 中使用 GitHub Copilot,您必须有效订阅 Copilot。在 PyCharm 中安装 GitHub Copilot 后,您现在可以将其用作项目的扩展。此外,它很容易安装在不同的 IDE 平台上,您还可以为特定编程语言启用 GitHub 插件。此外,按照以下步骤,您可以轻松地在 PyCharm 中安装 GitHub Copilot。此外,在 IDE 上使用 GitHub Copilot 时,您可以使用一些快捷方式。

一览无遗 1万+

Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明

Utrust4701F与Utrust2700R读写器支持银河麒麟系统,广泛应用会员管理、支付管理等领域。本文将重点介绍Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明。以上方法适用于主流国产操作系统,如 优麒麟(UbuntuKylin)/ 中标麒麟(NeoKylin) / UOS(统信操作系统)/ 中兴新支点 / 红旗 linux(redflag linux)/ 普华 Linux(I-soft OS) / 威科乐恩 Linux(WiOS)等

华翔天诚科技 1834

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

在Makefile语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等 那么这些赋值等号分别表示什么含义呢? 1. “=” “=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用”=”进行赋值,变量的值是整个makefile中最后被指定的值。不太容易理解,举个例子如下: VIR_A = A VIR_B = $(VIR_A...

keep forward, go, go, go 7万+

数据结构实验1 集合的交、并、差

姓名:Far_Rainbow 学号: 202505000X 专业: 软件工程 年级:2020级 实验名称:实验1 集合的交、并、差 实验内容: (1)实验目的 通过该实验,让学生复习巩固C语言中的循环结构、循环控制条件、分支结构和数组/链表、函数的调用等有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。 (2)实验内容 通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。 (3)实验要求 从程序完善性上考虑,集合元

Far_Rainbow的博客 2178

makefile中=、:=和+=的区别

经常有人分不清= 、:=和+=的区别 这里我总结下做下详细的分析: 首先你得清楚makefile的运行环境,因为我是linux系统,那么我得运行环境是shell 在Linux的shell里,shell只认识字符串,所以你就不要说整形什么的了。说值也不贴切。 先看+=是什么意思? 因为shell只认识字符串,所以这里应该不难联想到+=就是字符串连接的意思。相当于c语言的 strcat 举个例子: x本来是 U; x += SB; 那么运行结果就是 x为USB; 接着...

u014426028的博客 984

保姆级教程:在STM32CubeIDE上快速部署micro_ros到STM32F407(附常见问题解决)

本文提供了一份详细的保姆级教程,指导开发者如何在STM32CubeIDE上快速部署micro_ros到STM32F407微控制器。内容涵盖从Windows与Ubuntu双环境搭建、micro-ROS静态库编译、STM32CubeIDE工程深度集成,到串口通信联调与常见问题解决的完整流程,旨在帮助读者构建稳定可靠的ROS2与嵌入式设备通信系统。

o4p5q6r7s的博客 324

叶绿体基因组提交NCBI全流程避坑指南

叶绿体基因组作为环状细胞器DNA,其数据提交并非简单上传,而是需严格遵循INSDC标准的学术出版行为。其核心原理在于元数据完整性、拓扑结构语义一致性与分类学路径精确匹配;技术价值体现在保障序列可追溯、可复现、可互操作;典型应用场景涵盖植物系统发育、条形码开发及合成生物学底盘构建。实践中,FASTA头行格式、feature table嵌套规则、taxid绑定及BankIt静默校验等环节极易引发失败。本文聚焦NCBI|叶绿体基因组数据上传中的高频报错与隐性约束,提供面向生物信息工程师的实操级规范解析。

weixin_31960565的博客 329

Makefile 学习总结

Makefile 中:= , ?=,+= ,= 的区别: = 是最基本的赋值 := 是覆盖之前的值 ?= 是如果没有被赋值过就赋予等号后面的值 += 是添加等号后面的值 = 和:=的区别是: = 表示:make 将整个makefile 展开后,再决定变量的值。变量的值是整个makefile 最后被指定的值。 x = foo y = $(x) bar x = xyz //在上例中,y的值将会是 xyz bar ,而不是 foo bar := 表示变量的值决定于它在ma

gege_hxg的博客 262

vs code , 配置 claude code 插件, 默认选项 : --dangerously-skip-permission

摘要:本文介绍如何在VS Code中为Claude Code插件配置--dangerously-skip-permission参数,包含两种方法:图形界面设置(适合新手)和直接编辑settings.json(精准配置)。该参数会跳过权限检查,仅建议在本地测试环境中使用。配置后需通过命令面板验证参数是否生效,并注意安全风险,避免在生产环境使用。多参数配置时需用数组格式,不同版本插件可能键名略有差异。

AI天才研究院 5000

Makefile = ?= := 区别 $@,$^,$<

= 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 1、“=” make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子: x = foo y = $(x) bar x = xyz ...

weixin_34109408的博客 200

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Makefile 中:= ?= += =的区别

转载https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE VRE = “Hello World!” else e...

yanheriver的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

简单聊一下makefile中的 =, :=, ?=和+=

最容易混淆的是 =和:=, 我们先来看看makefile: x = hello y = $(x) x = world test1: test1.cpp @echo $(y)       执行make后, 结果为world,  再看改动后的makefile: x = hello y := $(x) x = world test1: test1.cpp @echo $(y)       执行m

认知 行动 坚持 8582

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【转】Makefile中:=, =, ?=和+=的含义

在Makefile语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等 那么这些赋值等号分别表示什么含义呢? 1. “=” “=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用”=”进行赋值,变量的值是...

wang 恒 的博客 423

Makefile = := ?= += 分析

Makefile = := ?= += 分析 1. Makefile # ============================================================================ # Name : Makefile # Author : Yongqiang Cheng # Version : Feb 16, ...

程永强 603

Makefile 中:= ?= += =的不同之处

文章目录Makefile 中:= ?= += =的区别 Makefile 中:= ?= += =的区别 新建一个Makefile ifdef DEFINE_VRE VRE = “Hello World!” else endif ifeq ($(OPT),define) VRE ?= “Hello World! First!” endif ifeq ($(OPT),add) ...

fgh123的博客 518

android android.mk中:= ?= +=之间的区别

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE     VRE = “Hello World!” else endif ifeq ($(OPT),define)     VRE ?= “Hello World! First!” endif

成长的味道 1万+
上一篇: 虚拟文件系统
下一篇: VM中的网络
Climbe
博客等级 码龄10年 12粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值