GNU Make 3.79 使用指南:Makefile详解与规则编写
"GNU Make 使用手册" 《GNU Make 使用手册》是关于如何编写和使用Makefile文件的详尽指南,适用于那些希望通过GNU Make自动化构建过程的开发者。手册涵盖了从基础到高级的各种主题,包括Makefile的基本结构、规则的编写、变量的使用以及Makefile的执行策略。 1. **make概述** - 介绍了手册的阅读方法,以及如何报告遇到的问题和bug。 2. **Makefile文件介绍** - **规则的格式**:说明了规则的构成,包括目标、依赖和命令。 - **一个简单的Makefile文件**:展示了一个基本的Makefile示例。 - **make处理Makefile文件的过程**:解释了make如何解析和执行Makefile中的指令。 - **使用变量简化Makefile文件**:介绍了如何使用变量来提高Makefile的可读性和复用性。 - **让make推断命令**:讨论了make如何自动推断构建目标所需的命令。 - **另一种风格的Makefile文件**:展示了不同的编写风格。 - **在目录中删除文件的规则**:讲解了如何制定删除文件的规则。 3. **编写Makefile文件** - **Makefile文件的内容**和**命名**:讨论了Makefile应该包含什么内容,以及如何命名。 - **包含其它的Makefile文件**:解释了如何使用`include`指令合并多个Makefile。 - **变量MAKEFILES**:讲述了这个变量的作用,用于指定额外的Makefile。 - **Makefile文件重新生成的过程**:描述了如何让make自动更新Makefile。 - **重载其它Makefile文件**:讨论了如何覆盖已有的规则。 - **make读取Makefile文件的过程**:详细阐述了make加载和解析Makefile的步骤。 4. **编写规则** - **规则的语法**:深入讨论了规则的编写规范。 - **在文件名中使用通配符**:介绍了如何使用`*`和`?`等通配符匹配多个文件。 - **函数wildcard**:讲解了如何获取当前目录下匹配模式的所有文件名。 - **在目录中搜寻依赖**:涉及VPATH机制,允许在多个目录中查找依赖文件。 - **假想目标**:用于表示不实际存在的目标,通常用于指定构建流程的起点。 - **没有命令或依赖的规则**:解释了这些规则的意义。 - **使用空目录文件记录事件**:介绍了如何利用空文件作为构建过程的标记。 - **内建的特殊目标名**:如`.PHONY`,`.SUFFIXES`等,它们有特殊的含义。 - **具有多个目标的规则**:一个规则可以关联多个目标。 - **具有多条规则的目标**:一个目标可以有多个构建步骤。 - **静态格式规则**:提供了更灵活的规则定义方式。 - **双冒号规则**:用于在多个规则中指定优先级。 5. **在规则中使用命令** - **命令回显**:控制是否显示命令行。 - **执行命令**:描述了make如何执行命令行。 - **并行执行**:make可以并行运行命令以提高构建效率。 - **命令错误**:如何处理命令执行失败的情况。 - **中断或关闭make**:如何在出错时停止整个构建过程。 - **递归调用make**:在Makefile中使用`make`调用自身。 - **固定次序命令**:确保某些命令按特定顺序执行。 - **使用空命令**:有时需要一个无操作的命令。 6. **使用变量** - **变量引用基础**:介绍了如何声明和使用变量。 - **变量的两个特色**:预定义变量和用户定义变量的区别。 - **变量高级引用技术**:如替换引用和嵌套引用。 - **变量取值**:包括立即赋值和延迟赋值。 - **设置变量**:讲解了设置变量的不同方法。 - **为变量值追加文本**:如何向变量值添加新内容。 - **override指令**:用于覆盖Makefile中已有的变量设置。 - **定义多行变量**:如何在一行内定义多行内容的变量。 - **环境变量**:如何使用环境变量。 - **特定目标变量的值**:针对特定目标设置不同变量值。 - **特定格式变量的值**:如目标特定变量。 7. **Makefile文件的条件语句** - **条件语句的例子**和**语法**:如何根据条件执行不同的代码块。 - **测试标志的条件语句**:基于特定条件进行逻辑判断。 8. **文本转换函数** - **函数调用语法**:如何调用内置的文本转换函数。 - **字符串替换和分析函数**:如`patsubst`,`subst`等。 - **文件名函数**:如`basename`,`dirname`等。 - **函数foreach**:用于循环操作。 - **函数if**:条件表达式。 - **函数call**:调用变量作为函数。 - **函数origin**:获取变量的来源。 - **函数shell**:执行shell命令。 - **控制Make的函数**:如`$(error)`,`$(warning)`等。 9. **运行make** - **指定Makefile文件的参数**:如何指定要使用的Makefile。 - **指定最终目标的参数**:告诉make要构建哪个目标。 - **代替执行命令**:如何指定替代命令执行的方式。 - **避免重新编译文件**:使用`.PHONY`防止误判文件的修改状态。 - **变量重载**:在命令行上覆盖Makefile中的变量值。 - **测试编译程序**:检查编译器是否可用。 - **选项概要**:列出了可用的make命令行选项。 10. **使用隐含规则** - **隐含规则**:make内建的文件构建规则。 - **隐含规则目录**:如何为隐含规则指定搜索路径。 - **隐含规则使用的变量**:如`CFLAGS`等。 - **隐含规则链**:多个隐含规则可以串联。 - **定义与重新定义格式规则**:自定义和修改隐含规则。 - **自动变量**:如`$@`,`$<`等,它们代表目标和依赖。 - **格式匹配**:如何匹配隐含规则。 - **万用规则**:一种通用的隐含规则。 - **删除隐含规则**:禁用特定的隐含规则。 - **定义最新类型的缺省规则**:创建新的默认构建行为。 - **过时的后缀规则**:旧式的隐含规则。 11. **使用make更新档案文件** - **档案成员目标**:处理档案文件(如库文件)的构建。 - **隐含规则**:用于档案成员目标的构建。 - **更新档案成员的符号索引表**:如何更新档案的索引。 - **使用档案的危险**:使用档案文件可能带来的问题。 - **档案文件的后缀规则**:特别针对档案文件的构建规则。 12. **GNU make的特点** - 描述了GNU Make相对于其他版本或实现的独特功能。 13. **不兼容性和失去的特点** - 讨论了与旧版本或非GNU make的不兼容性。 14. **Makefile文件惯例** - 提供了编写Makefile的一些最佳实践和标准约定。 15. **快速参考** - 提供了一张方便查阅的关键概念和功能的速查表。 16. **make产生的错误** - 解释了make在执行过程中可能出现的错误类型。 17. **复杂的Makefile文件例子** - 展示了复杂Makefile的示例,以加深理解。 这本手册是学习和精通GNU Make的宝贵资源,适合所有希望提高构建效率和自动化工作流的开发人员。
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景