Makefile常用知识点
格式
- 目标:最终要去生成的文件, 定格写,后面是冒号(冒号后面是依赖)
- 依赖:用来生成目标的源材料
- 命令:加工的方法,命令前面一定是Tab, make的过程就是使用命令将依赖加工成目标的过程
工作原理
- 当我们执行make xx时,Makefile会自动执行xx这个目标下面的命令语句
- 当我们make xx时,是否执行是取决于依赖的,依赖如果成立就会执行命令,否则不执行
- 直接执行make与执行make 第一个目标的效果是一样的(第一个目标其实就是默认目标)
命令前缀
符号 | 含义 |
---|---|
无 | 回显命令和结果, 出错时中断 |
- | 回显命令和结果, 出错时继续执行 |
@ | 不回显命令, 仅显示结果, 出错时中断 |
通配符%和自动推导
- %代表一个或几个字符,例如%.o就代表所有以.o为结尾的文件。
- 当Makefile需要一个文件时,他会将这个目标去按规则套用,一旦套用上某个规则说明,则Makefile会试图寻找这个规则中的依赖,如果能找到则会执行这个规则用依赖生成目标。
自动变量
- $@ 规则的目标文件名
- $< 规则的依赖文件名
- $^ 依赖的文件集合
定义和使用变量
无变量类型,直接定义使用。$变量名使用
- = 赋值语句中变量在被解析时,取决于变量最后一次赋值的值
- := 赋值语句中变量在被解析时,取决于变量最近一次赋值的值
- ?= 前面没有赋值(定义)过时才赋值
- += 给一个已经赋值的变量继续赋值,续接的内容和原来的内容会以空格隔开
环境变量
- 使用export导出的就是环境变量,一般使用大写,普通量使用小写. 环境变量回影响到其它Makefile文件,需谨慎使用. 环境变量在整个工程的Makefile中可以共享,普通变量只是当前本Makefile可用.
特殊符号
- @静默执行 不输出命令本身,仅输出命令本身
Makefile常用知识点的更多相关文章
- DB2_SQL_常用知识点&实践
DB2_SQL_常用知识点&实践 一.删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快 ...
- JAVA常用知识点及面试题总结
1. String.StringBuffer.StringBuilder三者区别? (1)三者在执行速率上的比较: String<StringBuffer<StringBuilder 原因 ...
- Makefile 常用函数表
Makefile 常用函数表 一.字符串处理函数1.$(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst.函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”.返 ...
- HTML常用知识点代码演示
1 HTML部分常用知识点 <!-- 版本声明 --> <!DOCTYPE html> <!-- 唯一根元素 --> <html> <!-- 对网 ...
- Java 常用知识点
Java 常用知识点 1.日期格式化 SimpleDateFormat Date date=new Date(System.currentTimeMillis()) ; SimpleDateForma ...
- Less常用知识点
上篇文章介绍了如何安装Less,我们将所有东西都写在.less里面,最后通过命令将.less转换成.css文件,就可以放入到项目里用了.今天了解一些less常用知识点. 1.变量:声明两个变量,一个是 ...
- BIOS备忘录之EC常用知识点
BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...
- YII2常用知识点总结
YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...
- CSS3常用知识点
CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa& ...
随机推荐
- spring mvc: json练习
spring mvc: json练习 本例需要用到的json包: 如下: jackson-databind jackson-core jackson-annotations <!-- https ...
- 【转至nmap】nc命令
什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server ...
- HDU 4352 XHXJ's LIS ★(数位DP)
题意 求区间[L,R]内满足各位数构成的数列的最长上升子序列长度为K的数的个数. 思路 一开始的思路是枚举数位,最后判断LIS长度.但是这样的话需要全局数组存枚举的各位数字,同时dp数组的区间唯一性也 ...
- JavaScript中的call、apply、bind是怎么回事?
在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对 ...
- 常见浏览器bug(针对IE6及更低版本)及其修复方法
常见bug及其修复方法有以下几种 1.双外边距浮动bug 双外边距浮动bug在IE6及更低版本中常见.所谓双外边距浮动bug是指使任何浮动元素上的外边距加倍.(见下图) 只要将元素的display属性 ...
- 通过一道面试题了解Condition线程通信
Condition Condition接口描述了可能会与锁有关联的条件变量.这些变量在用法与使用Object.wait访问的隐式监视器类似,但提供了更强大的功能.需要特别指出的是,单个Lock可能与多 ...
- Quartz 框架 教程(中文版)2.2.x
Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架 Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介 Quar ...
- 【51nod-1010】因子只含有2 3 5的数
K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如:n = ...
- RxJava 详解
给 Android 开发者的 RxJava 详解: http://gank.io/post/560e15be2dca930e00da1083#toc_1
- fegin 调用源码分析
http://techblog.ppdai.com/2018/05/28/20180528/ 这篇文章是相当详细