格式

  • 目标:最终要去生成的文件, 定格写,后面是冒号(冒号后面是依赖)
  • 依赖:用来生成目标的源材料
  • 命令:加工的方法,命令前面一定是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. mysql数据库优化课程---18、mysql服务器优化

    mysql数据库优化课程---18.mysql服务器优化 一.总结 一句话总结: 1.四种字符集问题:字符集都设置为utf-82.slow log慢查询日志问题3.root密码丢失 1.mysql存在 ...

  2. mysql数据库优化课程---14、常用的sql技巧

    mysql数据库优化课程---14.常用的sql技巧 一.总结 一句话总结:其实就是sql中那些函数的使用 1.mysql中函数如何使用? 选择字段 其实就是作用域select的选择字段 3.转大写: ...

  3. Learning R笔记(一)

    基本操作 帮助文档:?函数.演示:demo(函数).参数列表:formals(函数),返回为成对列表pairlist. 用all.equal函数检查浮点数是否相等,容忍度默认为1.5e-8,如果相等返 ...

  4. 大白话,讲编程之《ES6系列连载》汇总

    如果你经历过2,3年前的前端开发,你一定感受过兼容IE6,7的痛苦,一定用过网页三剑客的dreamweaver编写html,面试的时候面试官一定会问你:会用PS切图吗? 刚开始的时候你发现,web前端 ...

  5. msys git 安装配置、git命令行使用

    安装 .安装msys git客户端程序 .打开git bash,命令ssh-keygen –C “admin@test.cn “ –t rsa .复制C:\Users\felix\.ssh\id_rs ...

  6. String类运算符重载,自己实现

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  7. L159

    Waves are the children of the struggle between ocean and atmosphere, the ongoing signatures of infin ...

  8. CDN加速的实现 --- varnish

    一.什么是CDN cdn全称为内容分发网络(Content Delivery Network).基本思想是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,是内容传输地更快.更稳定.通过在 ...

  9. 编译安装pgbouncer-checking for OpenSSL... configure: error: not found

    花了一上午时间将pgbouncer的参数通读了一遍,对他有个大致的了解:1.配置分为连接池和pgbouncer两个部分[database]\[pgbouncer ].2.一条记录对应创建一个连接池,连 ...

  10. Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议

    Django框架的服务器架构一般是 Nginx + uWSGI + Django (1)一些基本概念 1 WSGI协议,uwsgi协议 WSGI协议(通讯协议):Python用于Web开发的协议(用于 ...