http://www.cnblogs.com/pengdonglin137/p/3801060.html

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?

新建一个Makefile,内容为:
ifdef DEFINE_VRE
    VRE = “Hello World!”
else
endif

ifeq ($(OPT),define)
    VRE ?= “Hello World! First!”
endif

ifeq ($(OPT),add)
    VRE += “Kelly!”
endif

ifeq ($(OPT),recover)
    VRE := “Hello World! Again!”
endif

all:
  @echo $(VRE)

敲入以下make命令:
make DEFINE_VRE=true OPT=define 输出:Hello World!
make DEFINE_VRE=true OPT=add 输出:Hello World! Kelly!
make DEFINE_VRE=true OPT=recover  输出:Hello World! Again!
make DEFINE_VRE= OPT=define 输出:Hello World! First!
make DEFINE_VRE= OPT=add 输出:Kelly!
make DEFINE_VRE= OPT=recover 输出:Hello World! Again!

从上面的结果中我们可以清楚的看到他们的区别了
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值

之前一直纠结makefile中“=”和“:=”的区别到底有什么区别。

1、“=”

make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

x = foo
            y = $(x) bar
            x = xyz

在上例中,y的值将会是 xyz bar ,而不是 foo bar 。

2、“:=”

“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。

x := foo
            y := $(x) bar
            x := xyz

在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。

转载于:https://www.cnblogs.com/yvivid/p/3804639.html

Makefile的几个赋值运算符(转:笔记)相关推荐

  1. 嵌入式之Makefile学习笔记

    注: 以下内容来自朱老师物联网大讲堂课件 1. 为什么需要Makefile 工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程. 在一个正式的软件项目中,由很多个.c ...

  2. Python入门学习笔记2

    一.赋值 1.链式赋值 2.系列解包赋值,实现变量互换 a,b,c=4,5,6 b 5 print(a,b) 4 5 a,b=b,c c 6 3.数字运算 加减乘除 + - * / // 整除 7// ...

  3. 【Linux + Makefile】Makefile中的.PHONY作用以及赋值运算(各种=符号)的区别

    笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefile的小的知识点,分享给大家. 通过阅读本文,你将了解到以下知识: 1.Makefilke中的.PHONY ...

  4. x210:uboot和系统移植

    注:本文是对朱老师uboot和系统移植课程的备忘引导性笔记,主要是为了能够在学完后快速回忆起相关内容.本文主要记录了一些关键易忘性知识点并包含少量理解性内容,遵循尽量精简的原则,以尽量少的篇幅概括整个 ...

  5. 第一篇Java基础知识 复习博客

    目录 学习笔记(p14) java的基本格式 学习笔记(p15)  java中的注释 学习笔记(p16)  Java中的标识符 学习笔记(p17)  java中的关键字 学习笔记(p18)  Java ...

  6. makefile经验笔记

    makefile笔记 字符需要转意,输入字符需要转意,输入字符需要转意,输入$替换 x=a b c d 方式直接建立数组,而shell中需要加引号 变量需要用()或{}包围,而shell中只能用{} ...

  7. Makefile学习笔记 - 我的CPP之路 - C++博客

    Makefile学习笔记 - 我的CPP之路 - C++博客 Makefile学习笔记 Makefile学习笔记 先列出一个很简单的Makefile例子: --------- hd.cpp #incl ...

  8. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  9. C++阶段01笔记03【运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 3 运算符 3.1 算术运算符 示例1 示例2 示例3 3.2 赋值运算符 示例 3.3 比较运算符 示例 3.4 逻辑运算符 ...

最新文章

  1. oc75--不可变字典NSDictionary
  2. 王木匠,我服了你一半
  3. Oracle去除表中重复记录
  4. 1003 Dijkstra算法
  5. matlab与音频处理
  6. linux之如何在任意目录执行我常用的脚本文件
  7. git中使用emacs和vimdiff/Ediff工具
  8. 1. SVN (1)
  9. 搜狐校园“情感分析×推荐排序“算法大赛 AutoX方案 转载poteman
  10. LayoutInflater.inflate()方法的深入理解
  11. codevs2069 油画 — 动态维护优先队列
  12. 机器学习-推荐系统-利用用户标签数据
  13. AcWing每日一题2041. 干草堆
  14. htc e9pw android 6.0,HTC One E9+(E9pw 联通4G)一键ROOT教程,简单ROOT
  15. C#静默打印 PDF
  16. 3、Origin安装教程
  17. 论文投稿指南——什么是SCI,SSCI ,CSSCI
  18. 哈夫曼树原理及构造方法
  19. 一体机怎么修复音频服务器,电脑一体机没有声音怎么处理
  20. 数据结构(16)队列的顺序存储结构

热门文章

  1. cad批量偏移_永远都不会卸载的几款CAD插件,月入过万不要太轻松。
  2. java字节字符流实验报告_Java第09次实验(IO流)--实验报告
  3. ionic4 引入外部字体ttf
  4. htt:// ************不在以下 request 合法域名列表中,请参考文档:******************************
  5. ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url
  6. 基于php程序系统设计,PHP程序静态分析系统的设计与实现
  7. 建行优盾制单重要还是复核重要_想秒批建行5万+白金信用卡,你得满足这些条件!...
  8. android百度地图根据点路线规划,Android 百度地图路径规划一直都是搜索不到结果...
  9. yum安装指定版本php,如何通过yum安装指定版本的PHP
  10. php v9 邮箱登陆,PHPCMS v9会员登录支持Email登录的实现方法