GUN make 中文手册

preview
需积分: 0 1 下载量 183 浏览量 更新于2016-09-12 收藏 1.34MB PDF 举报
### GUN make 中文手册知识点概览 #### 第一章:概述 - **GNU Make简介**:GNU Make是一款强大的自动化构建工具,广泛应用于软件工程领域,用于自动化编译过程及项目构建管理。 - **准备知识**:理解基本的Unix/Linux操作系统概念、熟悉shell脚本编写以及了解基本的文件系统结构。 #### 第二章:GNU Make介绍 - **Makefile简介**: - Makefile是GNU Make的工作脚本,其中定义了如何构建项目的目标文件。 - Makefile由一系列规则组成,每个规则定义了一个目标(通常是文件名),该目标依赖于一组其他文件,并且定义了一系列命令来更新这些文件。 - **Makefile规则介绍**: - 规则格式:`target : prerequisites\n\tcommand` - `target`:要构建的目标文件。 - `prerequisites`:构建目标所需的前置文件。 - `command`:用于构建目标的具体指令。 - **简单的示例**:通过一个简单的Makefile示例展示如何定义目标、依赖和命令。 - **make如何工作**: - make读取Makefile中的规则,确定哪些文件需要更新,并执行相应的命令。 - make会检查文件的时间戳,仅当目标文件比其依赖文件旧时才重新构建。 - **指定变量**: - 变量用于存储字符串值,可以在Makefile中多次引用。 - 示例:`CC = gcc`,这里`CC`变量被定义为`gcc`。 - **自动推导规则**: - make支持自动推导规则,即根据文件扩展名自动生成构建规则。 - 例如,`.c.o`规则可以将C源文件编译成对象文件。 - **另类风格的makefile**:介绍不同风格的Makefile编写方式,如使用脚本语言动态生成Makefile等。 - **清除工作目录过程文件**:介绍如何编写规则来清理中间文件或临时文件,保持工作目录的整洁。 #### 第三章:Makefile总述 - **Makefile的内容**:详细介绍Makefile文件中可能包含的各种元素,如变量定义、规则声明等。 - **makefile文件的命名**: - 通常名为`Makefile`或`makefile`。 - make默认查找这两个文件名之一。 - **包含其它makefile文件**: - 使用`include`指令可以引入其他Makefile文件。 - 便于组织大型项目的构建逻辑。 - **变量MAKEFILES**:存储包含的Makefile文件列表。 - **变量MAKEFILE_LIST**:存储当前Makefile及其所有被包含文件的完整路径列表。 - **其他特殊变量**:介绍make提供的一些特殊变量,如`$@`代表目标文件名称等。 - **makefile文件的重建**:当Makefile文件本身发生改变时,make会重新读取并解析它。 - **重载另外一个makefile**:介绍如何在不重启make进程的情况下加载新的Makefile文件。 - **make如何解析makefile文件**: - 变量取值:如何引用和解析变量。 - 条件语句:使用条件结构来控制Makefile的执行流程。 - 规则的定义:如何定义规则及其依赖关系。 #### 第四章:Makefile的规则 - **规则语法**:深入探讨Makefile中规则的详细语法。 - **依赖的类型**:解释不同类型的依赖关系及其应用场景。 - **文件名使用通配符**: - 介绍如何利用通配符来匹配多个文件名。 - 讨论通配符使用时的常见问题及解决方法。 - **目录搜寻**: - 介绍如何配置make来搜索指定目录下的文件。 - 包括一般搜索、选择性搜索以及搜索机制的细节。 - **Makefile伪目标**:介绍如何定义和使用伪目标来执行非文件构建相关的任务。 - **强制目标**:介绍如何创建没有依赖项或命令的目标,常用于触发特定行为。 #### 第五章:规则的命令 - **命令回显**:解释如何显示命令而不是直接执行。 - **命令的执行**:讨论命令执行的细节,包括如何处理命令中的特殊字符等。 - **并发执行命令**:介绍如何配置make以并行执行命令。 - **命令执行的错误**:探讨命令执行失败时的处理策略。 - **中断make的执行**:介绍如何在执行过程中终止make进程。 - **make的递归执行**: - 使用make命令从Makefile内部调用另一个make进程。 - 探讨递归调用的优点与缺点。 - **定义命令包**:介绍如何将多个命令打包为一个单元进行管理。 - **空命令**:有时可能需要定义一个规则但不执行任何命令。 #### 第六章:Makefile中的变量 - **变量的引用**:讲解如何在Makefile中引用已定义的变量。 - **两种变量定义**: - 递归展开式变量:变量在使用时才会被解析。 - 直接展开式变量:变量定义时立即展开。 - **变量的高级用法**: - 替换引用:在引用变量时替换其中的部分文本。 - 套嵌引用:在一个变量的定义中引用另一个变量。 - **变量取值**:探讨如何获取变量的实际值。 - **如何设置变量**:介绍不同的方法来设置变量,包括在命令行上设置变量。 - **追加变量值**:如何向现有变量添加新值。 - **override指示符**:用于覆盖已定义的变量值。 - **多行定义**:如何定义跨多行的变量。 - **系统环境变量**:如何在Makefile中使用系统环境变量。 - **目标指定变量**:针对特定目标定义的变量。 - **模式指定变量**:根据文件名模式来指定变量值。 #### 第七章:Makefile的条件执行 - **条件判断的基本语法**:介绍如何在Makefile中使用条件结构来控制代码的执行流程。 - **标记测试的条件语句**:探讨如何使用标记测试来进行条件判断。 #### 第八章:make的内嵌函数 - **函数的调用语法**:讲解make提供的各种内置函数及其使用方法。 - **文本处理函数**: - 如`subst`用于替换字符串,`patsubst`用于模式替换等。 - 其他文本处理函数还包括排序、筛选等功能。 以上内容仅为《GNU Make中文手册》的一部分摘要,涵盖了从基础到高级的主题,旨在帮助读者全面掌握GNU Make的使用技巧,从而更高效地管理和构建软件项目。