《GNU Make中文手册》是一本全面介绍GNU Make工具使用的PDF文档,提供详细的命令、函数和技巧解释,帮助用户高效管理编译过程。
### GNU make 中文手册知识点概览
#### 一、概述
**GNU make** 是一个用于构建项目的工具,它能够根据文件的时间戳来决定哪些文件需要重新编译或更新。本手册将详细介绍 **GNU make** 的使用方法,包括 Makefile 的编写、规则的定义以及变量的应用等。
##### 1.1 Make 之前的基本知识
- **概述**:在使用 **GNU make** 之前,了解其基础知识是非常重要的。这里涵盖了 **GNU make** 的工作原理、Makefile 文件的结构以及如何利用 **GNU make** 来自动化构建过程。
- **准备知识**:读者需要具备一定的 shell 编程基础,了解文件系统和基本的编程概念。
##### 1.2 GNU make 介绍
- **Makefile 简介**:介绍了 Makefile 的基本结构,包括目标、依赖项和命令行。
- **Makefile 规则介绍**:详细解释了规则的概念,包括目标、依赖项、命令以及规则的作用。
- **简单的示例**:通过一个简单的示例来展示如何编写 Makefile。
- **make 如何工作**:深入探讨了 **make** 工具的工作流程,包括如何读取 Makefile、如何解析规则以及如何执行命令。
- **指定变量**:讨论了如何在 Makefile 中定义和使用变量。
- **自动推导规则**:解释了自动推导规则的概念及其在实际应用中的作用。
- **另类风格的 makefile**:介绍了一些非传统的 Makefile 写作方式,例如使用模式规则。
- **清除工作目录过程文件**:讲解了如何通过 Makefile 清理项目构建过程中产生的临时文件。
#### 二、Makefile 总述
##### 2.1 Makefile 的内容
- **Makefile 的内容**:深入探讨了 Makefile 的各个组成部分,包括规则、变量定义、函数调用等。
- **makefile 文件的命名**:介绍了 Makefile 文件的标准命名习惯以及如何指定不同的文件名。
- **包含其它 makefile 文件**:讲解了如何在一个 Makefile 文件中包含另一个 Makefile 文件,这对于大型项目非常有用。
- **变量 MAKEFILES**:解释了 MAKEFILES 变量的用途以及如何利用它来管理多个 Makefile 文件。
- **变量 MAKEFILE_LIST**:介绍了 MAKEFILE_LIST 变量,该变量包含了所有被 make 加载的 Makefile 文件的列表。
- **其他特殊变量**:列举并解释了一些特殊的 make 变量,这些变量对于控制 make 的行为非常重要。
- **makefile 文件的重建**:讨论了如何让 make 在适当的时候重新生成 Makefile 文件。
- **重载另外一个 makefile**:讲解了如何在 make 运行期间重载一个新的 Makefile 文件。
#### 三、Makefile 的规则
##### 3.1 一个例子
- 通过具体的示例来展示 Makefile 规则的实际应用。
##### 3.2 规则语法
- 深入介绍了规则的语法结构,包括目标、依赖项、命令等部分。
##### 3.3 依赖的类型
- 讨论了不同类型的依赖关系,并解释了它们之间的区别。
##### 3.4 文件名使用通配符
- **通配符使用举例**:通过实例来展示通配符的使用方法。
- **通配符存在的缺陷**:指出了使用通配符可能带来的问题及解决办法。
- **函数 wildcard**:介绍了如何使用 wildcard 函数来生成文件名列表。
##### 3.5 目录搜寻
- **一般搜索(变量 VPATH)**:解释了 VPATH 变量的用途以及如何配置它来搜索文件。
- **选择性搜索(关键字 vpath)**:介绍了如何使用 vpath 关键字来指定特定的搜索路径。
- **目录搜索的机制**:详细阐述了 make 在查找文件时所采用的搜索策略。
- **命令行和搜索目录**:探讨了如何通过命令行参数来影响目录搜索的行为。
- **隐含规则和搜索目录**:讨论了隐含规则与目录搜索之间的相互作用。
- **库文件和搜索目录**:说明了如何处理库文件的搜索问题。
##### 3.6 Makefile 伪目标
- 介绍了 Makefile 中的伪目标(即不对应于任何文件的目标),并说明了它们的应用场景。
##### 3.7 强制目标
- 解释了什么是强制目标(即没有依赖项和命令的目标),以及它们的作用。
##### 3.8 空目标文件
- 描述了空目标文件的概念及其用途。
##### 3.9 Makefile 的特殊目标
- 列举并解释了一些特殊的 Makefile 目标,如 .PH