GNU make中文手册——Makefile深度解析
需积分: 9 82 浏览量
更新于2024-12-15
收藏 1.29MB PDF 举报
"GNUmake中文手册,ver-3.8,由徐海兵翻译,介绍了Makefile的基本概念、规则和使用方法,涵盖了Makefile的概述、规则、变量、通配符、目录搜索、特殊目标等内容。"
在IT行业中,Makefile是构建自动化工具的核心,尤其在Linux和Unix系统中广泛使用。`gun make`通常指的是GNU Make,这是一个用于自动化编译和链接过程的工具,通过读取Makefile来决定如何构建项目。
**第一章:概述**
1.1.1 概述:介绍了在使用Make之前需要了解的基本知识,包括软件构建过程和自动化构建的概念。
1.1.2 准备知识:讲解了如何理解和编写Makefile,以及它在软件开发中的作用。
1.2 GNUmake介绍:简述了GNU Make的功能和特性,包括Makefile的结构和基本规则。
1.2.1 Makefile简介:Makefile是Make的工作蓝图,列出目标文件及其依赖关系,以及更新这些文件所需的命令。
1.2.2 Makefile规则介绍:规则定义了如何从依赖文件生成目标文件,包括命令行指令。
1.2.3 简单示例:通过实例展示了如何创建和使用Makefile。
1.2.4 make如何工作:解释了make是如何解析Makefile,执行命令并决定哪些目标需要更新的。
1.2.5 指定变量:变量在Makefile中用于存储值,可以简化重复的文本和逻辑。
1.2.6 自动推导规则:GNU Make内置了一些隐含规则,可以根据文件扩展名自动推导构建步骤。
1.2.7 另类风格的makefile:讨论了不同风格的Makefile编写方式。
1.2.8 清除工作目录过程文件:如何在Makefile中设置清理目标,删除临时和编译生成的文件。
**第二章:Makefile总述**
2.1 Makefile的内容:包括目标、依赖、命令和其他特殊指令。
2.2 makefile文件的命名:通常命名为`Makefile`,但也可以是其他名称。
2.3 包含其它makefile文件:可以使用`include`命令引入多个Makefile。
2.4 变量MAKEFILES:这个环境变量可以指定额外的Makefile位置。
2.5 变量MAKEFILE_LIST:包含了当前被加载的所有Makefile的列表。
2.6 其他特殊变量:如目标、依赖等,它们有特定的用途和含义。
2.7 makefile文件的重建:如何让make重新读取Makefile进行更新。
2.8 重载另外一个makefile:在运行过程中改变Makefile。
2.9 make如何解析makefile文件:详细解析过程,包括变量赋值、条件语句和规则定义。
**第三章:Makefile的规则**
3.1 一个例子:展示了规则的实际应用。
3.2 规则语法:详细说明了规则的结构和组成部分。
3.3 依赖的类型:目标可以依赖于多个文件,包括源代码和中间文件。
3.4 文件名使用通配符:`*`和`?`等通配符用于匹配一组文件。
3.4.1 统配符使用举例:如何使用通配符匹配文件。
3.4.2 通配符存在的缺陷:通配符可能导致意外的结果。
3.4.3 函数wildcard:用于获取匹配通配符的文件列表。
3.5 目录搜寻:如何处理不在当前目录的依赖文件。
3.5.1 一般搜索(变量VPATH):通过设置VPATH变量指定搜索路径。
3.5.2 选择性搜索(关键字vpath):更精确地控制依赖文件的搜索路径。
3.5.3 目录搜索的机制:解释了make如何遍历目录查找文件。
3.5.4 命令行和搜索目录:命令行参数可以影响搜索行为。
3.5.5 隐含规则和搜索目录:隐含规则与目录搜索如何结合使用。
3.5.6 库文件和搜索目录:处理库文件时的搜索策略。
3.6 Makefile伪目标:如`.PHONY`,确保目标总是被重新构建。
3.7 强制目标:没有命令或依赖的规则,用于特殊目的。
3.8 空目标文件:用于记录依赖关系,自身不生成任何内容。
3.9 Makefile的特殊目标:如`.SUFFIXES`,`.DEFAULT`等,它们有特殊的含义和功能。
3.10 多目标:一个规则可以生成多个目标文件。
3.11 多规则目标:一个目标可以有多个规则,make会选择最新定义的。
3.12 静态模式:一种更灵活的规则定义方式,允许动态匹配依赖。
Makefile的掌握对于任何Linux或Unix下的开发者都至关重要,因为它能极大地提高开发效率,减少手动编译的繁琐。理解并熟练运用Makefile规则、变量和通配符,可以使构建过程更加高效和可靠。
2014-07-31 上传
2015-08-24 上传
2008-11-10 上传
2011-04-06 上传
2014-02-20 上传
2019-04-18 上传
2012-03-30 上传
点击了解资源详情
2023-12-07 上传
vickxie
- 粉丝: 0
- 资源: 5
最新资源
- 创建个性化的Discord聊天机器人教程
- RequireJS实现单页应用延迟加载模块示例教程
- 基于Java+Applet的聊天系统毕业设计项目
- 从HTML到JSX的转换实战教程
- 轻量级滚动到顶部按钮插件-无广告体验
- 探索皇帝多云的天空:MMP 100网站深度解析
- 掌握JavaScript构造函数与原型链的实战应用
- 用香草JS和测试优先方法开发的剪刀石头布游戏
- SensorTagTool: 实现TI SensorTags数据获取的OS X命令行工具
- Vue模块构建与安装教程
- JavaWeb图片浏览小程序毕业设计教程
- 解决 Browserify require与browserify-shim冲突的方法
- Ventuno外卖下载器扩展程序使用体验
- IIT孟买医院模拟申请webapp功能介绍
- 掌握Create React App: 开发Tic-Tac-Toe游戏
- 实现顺序编程与异步操作的wait.for在HarmonyOS2及JavaScript中