makefile使用笔记(二)变量
By francis_hao Oct 30,2017
makefile中可以使用变量,变量有多种类型,下面分别介绍
简单变量
简单变量的命名规则和c语言一致。
给变量赋值就表示创建了这个变量,使用变量时需使用$()或${}这样的形式。
变量的赋值有几种不同的形式
|
= |
递归扩展的变量赋值,仅当在变量被使用的时候才去扩展。变量可以先使用后赋值 例如: a=$(b) b=$(c) c=d 在一系列的赋值过后,a的值就是$(b)。 只有在使用a的时候,才会一步步的扩展a=$(b)=$(c)=d |
|
:= |
简单扩展的变量赋值,变量立即扩展,变量需要先赋值再使用 例如: a=$(b) b=$(c) c=d 在一系列的赋值过后,a的值是'',也就是空。因为在执行a=$(b)的时候,就要立即扩展,而此时b还没有被赋值,也就是空的。 |
|
?= |
如果变量之前没有被定义,则执行赋值操作,否则什么也不做 |
|
+= |
追加变量值 如果变量之前没有被定义过,那么+=自动变成=。 如果变量之前有过赋值操作,就进行追加赋值,赋值属性继承之前的赋值操作(=/:=) |
自动化变量
自动化变量是指符合某一规则或模式的值
|
$@ |
表示规则中的目标 |
|
$< |
依赖目标中的第一个目标文件?? |
|
$? |
所有比目标新的依赖,以空格分隔 |
|
$^ |
所有的依赖目标的集合,以空格分隔,若有重复只保留一份。 |
|
$+ |
所有的依赖目标的集合,以空格分隔,不去除重复的 |
|
$* |
表示目标模式中%及其以前的部分,abcd.v -> %.v ->abcd make可以识别一些常见的后缀名,比如hello.o对应的$*就是hello |

本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/7757822.html
参考
【1】 跟我一起写Makefile 陈皓 http://blog.csdn.net/haoel/article/details/2886/
makefile使用笔记(二)变量的更多相关文章
- 精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型
变量.作用域和内存问题 执行环境共有两种类型——全局和局部 作用域链会加长,有两种情况:try-catch语句的catch块,with语句. javascript没有块级作用域,即在if,for循环中 ...
- C#笔记(二)变量
C#把数据类型分为两种 ● 值类型 ● 引用类型 从概念上看:其区别是值类型直接存储其值,而引用类型存储对值的引用 这两种类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上 如果变 ...
- Go语言学习笔记(二) [变量、类型、关键字]
日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号. 2.Go 同其他语言不同的地方在于变 ...
- 《C++ Primer》读书笔记(二)-变量和基本类型
bool类型与其他类型转换时,0为false,1为true 浮点数赋值给整数的时候,进行近似处理,结果仅保留浮点数小数点之前的部分 整数赋值给浮点数的时候,小数部分记为0,如果该整数超过了浮点类型的容 ...
- tensorflow学习笔记二----------变量
tensorflow里面的变量表示,需要使用特定的语法进行.如果想构造一个行(列)向量,需要调用Variable函数进行.对两个变量进行操作,也要调用相应的函数. import tensorflow ...
- C#笔记(二)变量之预定义的引用类型
1.object类型 在C#中, object类型就是最终的父类型,所有内置类型和用户定义的类型都从它派生而 来. 这样, object类型就可以用于两个目的了: 可以使用object引用绑定任何子类 ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- Go语言学习笔记二: 变量
Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...
- Makefile笔记之一 ------ 变量的引用及赋值
1.变量的引用方式: "$(变量名)"或者"¥{变量名}" 例如: ${Objs}就是取变量Objs的值 注意: 当变量名为单字符是可以采用:"$a& ...
- <转>Windows平台下Makefile学习笔记(二)
本文转自:http://blog.csdn.net/clever101/article/details/8286066 上次我们学习了怎么用Makefile编译一个控制台工程.这次我们学习一下如何使用 ...
随机推荐
- 使用IntelRealScene设备结合Cocos引擎实现体感游戏开发
英特尔开发人员专区原文地址 Cocos游戏开发引擎对于广大开发者来说都比较熟悉,Intel RealScene是什么呢,简单理解是一种特殊的摄像头,可以捕捉用户的手势,面部表情等,进而实现AR,VR的 ...
- js-jQuery对象与dom对象相互转换(转载)
核心提示:jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,一般情况下,如S(’#id’ ...
- 面向对象编程(OOP)思想小结
Concepts 类(class):对我们要解决问题的抽象,比如建造房子的蓝图:但实现机制上来讲,类是根据蓝图构建而成的,存储在内存中的,用来表示对象的数据. 对象(object):根据类构建的实体, ...
- hadoop的safemode 安全模式
hadoop启动检查副本块数,就会进入safemode safemode的相关情况 虽然不能进行修改文件的操作,但是可以浏览目录结构.查看文件内容的. 在命令行下是可以控制安全模式的进入.退出和查看的 ...
- <力荐>非常好的正则表达式的详解<力荐>
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.t ...
- webpack入门指南-step01
一.webpack是什么? web开发中常用到的静态资源主要有JavaScript.CSS.图片.Jade等文件,webpack中将静态资源文件称之为模块.webpack是一个模块打包工具(命令行工具 ...
- 使用Node.js 搭建http服务器 http-server 模块
1. 安装 http-server 模块 npm install http-server -g 全局安装 2.在需要的文件夹 启动 http-server 默认的端口是8080 可以使 ...
- 王者荣耀交流协会Beta发布文案美工展示博客
logo: 我们的logo是蓝底白字,非常简洁大气的设计感,上面印有我们的软件名称,更好的直观的彰显了我们的主题.我们的软件就是要迎合使用者,给使用者更加方便快捷的工作体验,更好的衡量自己的时间分配. ...
- 感谢——Thunder团队
团队软件的开发,已经进入第二个阶段——Beta版本了.回头看看,我们走过了很长的一段路,也经历了很多,有意见不一的争吵.有取得暂时成功时的欢欣鼓舞,我们就像一家人,就像那首歌中唱到的,“我们是一家人, ...
- 《C》数组
数组 数组方法: var arr = [1, 2, 3]; arr.push(4)://arr='[1, 2, 3, 4]' 向末尾添加一个或者多个元素 arr.pop()://删除末位元素 var ...