规则
目标:依赖

[tab]命今

makefile有且仅有一个终极目标,生成一个终极文件。

make总是认为目标是文件,如果文件存在且没有依赖则立即返回,不会执行命令。

所以需要定义伪目标,因为伪目标不与文件绑定,不管同名文件存不存在都执行除非指定目标,

否则会寻找makefile第一个目标,即文件最前面的目标优先寻找明确的目标规则,找不到才使用通配符目标规则,无论通配符规则目标在文件位置。

依赖也是目标,从左到右进行检查。

如果依赖的文件时间戳晚于目标的文件时间戳,表示依赖文件有更新,触发规则。

深度优先遍历依赖树,同一个目标,多个规则,任意规则依赖变更会且仅会触发最后一个规则。

include,找makefile里面有没有目标规则,如果有且目标需要更新,则展开更新然后再展开如果没有目标规则,直接展开。如果没有此文件,报错。

Makefile拾遗相关推荐

  1. 浅显易懂 Makefile 入门 (12)— Makefile 常见的错误信息

    1. 常见的错误信息 make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 -.或者 make 使用 -k 选项执行时. make 执行过程的致命错误都带有前缀字符串 ***.错误信息 ...

  2. 浅显易懂 Makefile 入门 (10)— 嵌套执行 make、export 的使用

    1. 嵌套执行 make 在一个大的工程文件中,不同的文件按照功能被划分到不同的模块中,每个模块可能都会有自己的编译顺序和规则,如果在一个 Makefile 文件中描述所有模块的编译规则,就会很乱,执 ...

  3. 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS

    1. include文件包含 当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile ...

  4. 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行

    1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...

  5. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )

    1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...

  6. 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)

    编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...

  7. 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则

    1. 目标文件搜索(VPATH和vpath) 如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文 ...

  8. 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin

    1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...

  9. 浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译

    1. 什么是 Makefile Makefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目.一旦写编写好 Makefile 文件,只需要一个 ma ...

最新文章

  1. matlab中的方波信号图片_电气信息类专业课程之matlab系统仿真 第十章 DBPSK调制解调器(9)...
  2. php7 myrypt,nginx + php 配置
  3. Linux 系统的启动顺序
  4. Newtonsoft 六个超简单又实用的特性,值得一试 【上篇】
  5. IT兄弟连 JavaWeb教程 文件下载技术
  6. java编程思想学习笔记——第2章 一切都是对象
  7. [导入]XACT与X3DAudio整合的问题
  8. 《自己动手写操作系统》之 10分钟完成最小的操作系统
  9. 学生网页设计作业源码(HTML+CSS)——海贼王6页代码质量好
  10. JSP中通过checkbook实现批量管理
  11. 查看计算机80端口,电脑技巧分享:检测和解决80端口被占用的2种方法
  12. android 版本升级 解析包出问题怎么解决方案,Android 7.0解析包时出现问题 的解决方案(应用内更新)...
  13. python3.5变化(String)
  14. ctfshow 萌新计划 writeup1-8
  15. python可视化 Task04 文字图例尽眉目
  16. Householder变换、Givens旋转与QR分解
  17. akcms升级后台编辑器完美教程
  18. 德国亚琛大学计算机排名,德国大学排名,2021德国大学各大专业排名
  19. Selenium学习笔记4--获取页面元素内容
  20. 三相桥式全控整流电路simulink仿真_不可控整流电路知识介绍

热门文章

  1. 卸载chrome后无法安装新的chrome
  2. 如何批量新建文件夹,名称用excel里的
  3. df -h 详解和centos 磁盘清理 /dev/vda1系统盘满了
  4. js数据类型、对象类型、位运算符
  5. ARCGIS土地适宜性分析
  6. ubuntu14.04命令大全
  7. Tomcat配置(dbcp连接池、连接池加密、日志分割)
  8. android的u盘如何卸载,Android教程: 使用RE Manager删除系统自己的软件
  9. 关于pdf文件直接在chrome浏览器中直接打开而不是下载的问题
  10. 一键启动无钥匙进入手机控车安全靠谱吗?