Makefile编写指南:从基础到高级

5星 · 超过95%的资源 需积分: 16 317 下载量 195 浏览量 更新于2024-07-29 5 收藏 528KB PDF 举报
"跟我一起写Makefile" 本书详细介绍了如何编写Makefile,涵盖了Makefile的基本概念、规则、变量、命令以及高级技巧。以下是各章节的主要知识点: ### 第一章:概述 这一章给出了Makefile的基本介绍,说明了其在软件构建过程中的作用,即自动化编译和链接过程,提高开发效率。 ### 第二章:关于程序的编译和链接 本章讨论了编译和链接的基本原理,解释了为何需要Makefile来管理这些过程,以及如何通过Makefile简化复杂的构建流程。 ### 第三章:Makefile介绍 - **Makefile的规则**:描述了规则的结构,包括目标、依赖和命令,以及规则如何指导make进行工作。 - **一个示例**:提供了一个简单的Makefile实例,展示了如何定义规则以编译源代码。 - **make是如何工作的**:解释了make如何解析Makefile,查找依赖关系,并执行命令。 - **makefile中使用变量**:介绍如何在Makefile中定义和使用变量,以减少重复和提高可读性。 - **让make自动推导**:说明了make如何自动推导目标文件的依赖关系。 - **另类风格的makefile**:探讨了不同的编写Makefile的风格和技巧。 - **清空目标文件的规则**:讲解了如何设置清理目标,如`clean`目标,用于删除生成的中间和目标文件。 ### 第四章:Makefile总述 - **Makefile里有什么?**:阐述了Makefile可以包含的目标、规则、变量、函数等元素。 - **Makefile的文件名**:讨论了默认的Makefile文件名(通常是`Makefile`或`makefile`)及其查找逻辑。 - **引用其它的Makefile**:介绍了如何在主Makefile中包含其他Makefile,实现模块化管理。 - **环境变量MAKEFILES**:说明了如何通过环境变量指定额外的Makefile。 - **make的工作方式**:讨论了make的递归执行和并行构建策略。 ### 第五章:书写规则 - **规则举例**:提供了多种规则的实例,包括目标和依赖的不同组合。 - **规则的语法**:详细介绍了规则的语法结构,如冒号、制表符的使用。 - **在规则中使用通配符**:解释了如何使用`*`和`?`等通配符匹配多个文件。 - **文件搜寻**:描述了make如何寻找文件,以及`VPATH`变量的作用。 - **伪目标**:讲解了像`.PHONY`这样的伪目标,它们不对应实际文件,用于表示特定的任务。 - **多目标**:说明了如何在一个规则中处理多个目标。 - **静态模式**:介绍了静态模式规则,用于创建一组相似的规则。 - **自动生成依赖性**:讲解了如何动态生成目标文件的依赖,如通过`gcc -M`生成头文件依赖。 ### 第六章:书写命令 - **显示命令**:讨论了如何控制命令是否显示在终端上。 - **命令执行**:解释了命令的执行时机和顺序。 - **命令出错**:讲述了当命令执行失败时,make的行为。 - **嵌套执行make**:介绍了在Makefile中调用其他make实例的方法。 - **定义命令包**:说明了如何使用`\(`和`\)`包裹命令,防止特殊字符被误解。 ### 第七章:使用变量 - **变量的基础**:涵盖了变量的定义、赋值和使用。 - **变量中的变量**:讨论了变量展开和嵌套变量的处理。 - **变量高级用法**:包括函数式变量、变量的预定义和扩展。 - **追加变量值**:介绍了如何向已存在的变量添加值。 - **override指示符**:允许覆盖Makefile外部的环境变量。 - **多行变量**:展示了如何定义跨越多行的变量。 - **环境变量**:说明了如何在Makefile中使用环境变量。 - **目标变量**:针对特定目标的变量,如`$(obj:.o=.c)`。 - **模式变量**:类似于模式规则的变量,可以根据模式进行替换。 ### 第八章至第十三章: 后续章节继续深入讲解了Makefile的高级特性,包括条件判断、函数的使用、make的运行机制、隐含规则、更新函数库文件等内容。这些章节帮助读者掌握更复杂的Makefile编写技巧,以便构建更高效、灵活的构建系统。 通过这本书的学习,读者将能够熟练地编写和理解Makefile,从而有效地管理和自动化项目的构建过程。