GNU_make中文手册.pdf
### GNU_make中文手册知识点梳理 #### 一、概述与准备知识 - **GNU_make** 是一个功能强大的自动化构建工具,广泛应用于软件项目的编译管理。 - **概述**:本手册全面介绍了GNU_make的工作原理及其在实际项目中的应用方法。通过学习本手册,读者可以掌握如何编写高效的Makefile文件,实现自动化构建流程。 - **准备知识**: - 基础的Unix/Linux命令行操作能力。 - 对编译原理有一定的了解。 - 掌握基本的脚本语言,如Shell。 #### 二、GNU_make介绍 - **Makefile简介**:Makefile是GNU_make工作的核心配置文件,用于定义项目中的文件依赖关系以及编译命令。 - **Makefile规则介绍**:规则用于指定目标文件与源文件之间的依赖关系,并定义生成目标文件所需的命令。 - **简单的示例**:通过一个简单的Makefile示例来理解其基本结构和语法。 - **make如何工作**:make读取Makefile文件,根据其中的规则确定需要编译哪些文件,然后执行相应的命令进行编译。 - **指定变量**:变量是Makefile中用于存储字符串的一种方式,可以用来简化Makefile的编写。 - **自动推导规则**:make能够自动识别文件后缀名并应用预定义的规则来编译文件。 - **另类风格的makefile**:介绍一些非传统的Makefile编写技巧,例如使用特定的格式和约定来简化Makefile。 - **清除工作目录过程文件**:说明如何编写Makefile来清理编译过程中产生的临时文件。 #### 三、Makefile总述 - **Makefile的内容**:包括目标、规则、变量等。 - **makefile文件的命名**:通常命名为`Makefile`或`makefile`。 - **包含其它makefile文件**:介绍如何在一个Makefile中引入另一个Makefile文件。 - **变量MAKEFILES**:指定包含的Makefile文件列表。 - **变量MAKEFILE_LIST**:列出所有被make读取过的Makefile文件。 - **其他特殊变量**:如`$@`表示目标文件,`$<`表示第一个依赖文件等。 - **makefile文件的重建**:当Makefile文件本身发生变化时,make如何处理。 - **重载另外一个makefile**:如何重新加载Makefile文件以获取最新的变化。 - **make如何解析makefile文件**: - **变量取值**:解释变量如何在Makefile中被引用和扩展。 - **条件语句**:如`ifeq`、`ifdef`等,用于根据条件执行不同的规则。 - **规则的定义**:包括目标文件、依赖文件和命令。 #### 四、Makefile的规则 - **规则语法**:详细说明了如何定义规则,包括目标、依赖和命令。 - **依赖的类型**:包括普通依赖、模式依赖等。 - **文件名使用通配符**: - **统配符使用举例**:如何利用通配符匹配多个文件。 - **通配符存在的缺陷**:通配符可能带来的问题及解决方案。 - **函数wildcard**:介绍如何使用wildcard函数来处理文件名中的通配符。 - **目录搜寻**: - **一般搜索(变量VPATH)**:如何在多个目录中搜索依赖文件。 - **选择性搜索(关键字vpath)**:更加灵活地控制搜索路径。 - **目录搜索的机制**:make如何在指定目录中查找文件。 - **命令行和搜索目录**:命令行选项对搜索路径的影响。 - **隐含规则和搜索目录**:隐含规则如何与搜索路径相结合。 - **库文件和搜索目录**:库文件如何在搜索路径中被处理。 #### 五、规则的命令 - **命令回显**:如何让make显示正在执行的命令。 - **命令的执行**:make如何执行Makefile中的命令。 - **并发执行命令**:make如何同时执行多个命令以提高构建速度。 - **命令执行的错误**:当命令执行失败时,make如何处理。 - **中断make的执行**:如何在make执行过程中中断其运行。 - **make的递归执行**: - **变量MAKE**:用于控制递归make的行为。 - **变量和递归**:递归make中变量的作用。 - **命令行选项和递归**:递归make中命令行选项的应用。 - **-w选项**:使递归make在当前目录下执行。 - **定义命令包**:如何将一系列命令封装成一个包来执行。 - **空命令**:有时需要定义一个不执行任何命令的目标。 #### 六、Makefile中的变量 - **变量的引用**:如何在Makefile中引用变量。 - **两种变量定义(赋值)**: - **递归展开式变量**:定义变量时允许使用未定义的变量。 - **直接展开式变量**:定义变量时立即展开其中的变量。 - **定义一个空格**:如何在变量中定义空格。 - **“?=”操作符**:只有当变量未定义时才定义它。 - **变量的高级用法**: - **变量的替换引用**:如何在变量中引用其他变量。 - **变量的套嵌引用**:如何在一个变量中嵌套引用另一个变量。 - **变量取值**:如何获取变量的实际值。 - **如何设置变量**:如何在Makefile中设置变量。 - **追加变量值**:如何向已定义的变量追加值。 - **override指示符**:如何覆盖命令行中的变量值。 - **多行定义**:如何在Makefile中定义多行变量。 - **系统环境变量**:如何在Makefile中使用系统环境变量。 - **目标指定变量**:如何为特定目标定义变量。 - **模式指定变量**:如何为符合某种模式的目标定义变量。 #### 七、Makefile的条件执行 - **Makefile的条件判断**:如何使用条件语句来控制Makefile的执行流程。 - **条件判断的基本语法**:`ifeq`、`ifdef`等条件语句的使用方法。 - **标记测试的条件语句**:如何使用条件语句来标记测试结果。 #### 八、make的内嵌函数 - **函数的调用语法**:如何在Makefile中调用函数。 - **文本处理函数**: - **$(subst FROM,TO,TEXT)**:替换文本中的字符串。 - **$(patsubst PATTERN,REPLACEMENT,TEXT)**:模式替换。 - **$(strip STRINT)**:去除字符串前后的空白字符。 - **$(findstring FIND,IN)**:查找字符串。 - **$(filter PATTERN…,TEXT)**:过滤字符串。 - **$(filter-out PATTERN,TEXT)**:反向过滤字符串。 - **$(sort LIST)**:排序字符串列表。 - **$(word N,TEXT)**:提取字符串中的单词。 - **$(wordlist S,E,TEXT)**:提取字符串中的子列表。 - **$(words TEXT)**:统计字符串中的单词数量。 - **$(firstword TEXT)**:提取字符串中的第一个单词。 通过以上知识点的梳理,我们可以看到GNU_make是一个功能强大且高度可定制化的工具,适用于各种复杂的项目构建需求。掌握这些知识点不仅有助于提高开发效率,还能帮助开发者更好地理解和管理项目的构建过程。
剩余198页未读,继续阅读
- 粉丝: 5
- 资源: 23
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机械设计电脑电源上料工作站工位sw18可编辑全套设计资料100%好用.zip.zip
- 基于springboot的实现定时器的增删改查源码(java毕业设计完整源码).zip
- 基于springboot的高仿小米电子商城项目模板源码(java毕业设计完整源码).zip
- 深度学习蓝桥杯比赛项目-交通标志识别项目-适用于竞赛学习
- 基于springboot的客户关系管理系统源码(java毕业设计完整源码).zip
- 基于springboot的停车场管理系统源码(java毕业设计完整源码).zip
- 基于springboot的校园博客项目源码源码(java毕业设计完整源码).zip
- 基于springboot的用户管理系统源码(java毕业设计完整源码).zip
- 基于Vue和Element UI的后勤管理平台系统设计源码
- 机械设计电梯绳索冲压线sw16可编辑全套设计资料100%好用.zip.zip
- 机械设计电子产品搬运包装机sw18全套设计资料100%好用.zip.zip
- 基于Java+微信小程序的jsp排课管理系统设计源码
- 基于Gin+JWT的Go语言开发社区程序设计源码
- 基于C++与Qt的金山培训大作业源码汇总
- 机械设计动力滚筒输送机 板材压制用推板机sw21全套设计资料100%好用.zip.zip
- 基于PHP、HTML、JavaScript的虚拟人口播短视频软件设计源码