格式

  • 目标:最终要去生成的文件, 定格写,后面是冒号(冒号后面是依赖)
  • 依赖:用来生成目标的源材料
  • 命令:加工的方法,命令前面一定是Tab, make的过程就是使用命令将依赖加工成目标的过程

工作原理

  1. 当我们执行make xx时,Makefile会自动执行xx这个目标下面的命令语句
  2. 当我们make xx时,是否执行是取决于依赖的,依赖如果成立就会执行命令,否则不执行
  3. 直接执行make与执行make 第一个目标的效果是一样的(第一个目标其实就是默认目标)

命令前缀

符号 含义
回显命令和结果, 出错时中断
- 回显命令和结果, 出错时继续执行
@ 不回显命令, 仅显示结果, 出错时中断

通配符%和自动推导

  • %代表一个或几个字符,例如%.o就代表所有以.o为结尾的文件。
  • 当Makefile需要一个文件时,他会将这个目标去按规则套用,一旦套用上某个规则说明,则Makefile会试图寻找这个规则中的依赖,如果能找到则会执行这个规则用依赖生成目标。

自动变量

  • $@ 规则的目标文件名
  • $< 规则的依赖文件名
  • $^ 依赖的文件集合

定义和使用变量

无变量类型,直接定义使用。$变量名使用

  • = 赋值语句中变量在被解析时,取决于变量最后一次赋值的值
  • := 赋值语句中变量在被解析时,取决于变量最近一次赋值的值
  • ?= 前面没有赋值(定义)过时才赋值
  • += 给一个已经赋值的变量继续赋值,续接的内容和原来的内容会以空格隔开

环境变量

  • 使用export导出的就是环境变量,一般使用大写,普通量使用小写. 环境变量回影响到其它Makefile文件,需谨慎使用. 环境变量在整个工程的Makefile中可以共享,普通变量只是当前本Makefile可用.

特殊符号

  • @静默执行 不输出命令本身,仅输出命令本身

Makefile常用知识点的更多相关文章

  1. DB2_SQL_常用知识点&实践

    DB2_SQL_常用知识点&实践 一.删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快 ...

  2. JAVA常用知识点及面试题总结

    1. String.StringBuffer.StringBuilder三者区别? (1)三者在执行速率上的比较: String<StringBuffer<StringBuilder 原因 ...

  3. Makefile 常用函数表

    Makefile  常用函数表 一.字符串处理函数1.$(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst.函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”.返 ...

  4. HTML常用知识点代码演示

    1 HTML部分常用知识点 <!-- 版本声明 --> <!DOCTYPE html> <!-- 唯一根元素 --> <html> <!-- 对网 ...

  5. Java 常用知识点

    Java 常用知识点 1.日期格式化 SimpleDateFormat Date date=new Date(System.currentTimeMillis()) ; SimpleDateForma ...

  6. Less常用知识点

    上篇文章介绍了如何安装Less,我们将所有东西都写在.less里面,最后通过命令将.less转换成.css文件,就可以放入到项目里用了.今天了解一些less常用知识点. 1.变量:声明两个变量,一个是 ...

  7. BIOS备忘录之EC常用知识点

    BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...

  8. YII2常用知识点总结

    YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...

  9. CSS3常用知识点

    CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa& ...

随机推荐

  1. UML类图概述、设计模式

    深入浅出UML类图(http://blog.csdn.net/lovelion/article/details/7843308) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...

  2. [洛谷U62364]三次函数极值

    U62364 三次函数极值 题面 给定一个三次函数\(f(x)=a_3x^3+a_2x^2+a_1x+a_0\) 求其极值. 格式 输入包括一行四个整数\(a_3,a_2,a_1,a_0\) 输出包括 ...

  3. 第五章 如何使用Burp Target

    Burp Target 组件主要包含站点地图.目标域.Target 工具三部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况.当前的工作涉及哪些目标域.分析可能存在的攻击面等信息,下面我们就分 ...

  4. zookeeper常见错误

    1.在注册中心找不到对应的服务 这种错误是服务层代码没有成功注册到注册中心导致,请检查一下你的服务层代码是否添加了@service注解,并且该注解的包一定是com.alibaba.dubbo.conf ...

  5. VS的 X64下的汇编编译

    参考博客 VS编译64位汇编时报错:error C4235: 使用了非标准扩展: 不支持在此结构上使用“_asm”关键字 在用VS2013编译内联汇编时,报如下错误: 错误    5    error ...

  6. nyoj42——连通图加欧拉(连通图板子)dfs

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...

  7. [Android]Adb connection Error:远程主机强迫关闭了一个现有的连接

    目前,针对Android手机研发的刷机软件和手机助手软件,都会调用Google开发的adb工具与手机进行通信. 有的刷机软件或者手机助手软件,在系统里会常驻一个服务,独占adb的端口(5037),这样 ...

  8. 【51nod-1138】连续整数的和

    本来想着用尺取的思想,不过会超时.利用等差数列S = na+n*n(n-1)/2,得a = (2*S-n*(n-1))/(2*n),然后遍历n,只要满足a是整数就可以,这样复杂度从O(S)变成了O(s ...

  9. python 获取当前时间(关于time()时间问题的重要补充)

    python 获取当前时间   我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这 ...

  10. MoreEffectiveC++Item35(操作符)(条款5-8)

    条款5 对定制的"类型转换函数"保持警惕 条款6 区别increment/decrement操作符的前值和后置形式 条款7 千万不要重载&&,||,和,操作符 条款 ...