GNU make工具详解:Makefile编写指南
需积分: 36 123 浏览量
更新于2024-09-19
收藏 1.34MB PDF 举报
"GNUmake中文手册,由徐海兵翻译整理,ver-3.8,旨在详细介绍GNU make工具,包括其用法、语法,特别是如何编写Makefile,以供Linux程序员参考。"
GNU Make是Linux和其他类Unix系统中用于自动化构建项目的工具。它通过读取名为Makefile的文件,根据其中的规则来确定哪些文件需要更新,并执行相应的命令。这篇手册全面地讲解了GNU Make的相关知识。
**第一章:概述**
这部分介绍了 GNU Make 的基本概念和预备知识,包括Makefile的重要性以及为何需要学习和掌握Makefile的编写。
**第二章:GNUmake介绍**
- **Makefile简介**:Makefile是一组规则,告诉make如何编译、链接源代码,创建可执行文件。
- **Makefile规则介绍**:规则定义了目标文件及其依赖文件,以及更新目标所需的命令。
- **简单的示例**:展示了基础的Makefile结构,如如何定义目标和依赖。
- **make如何工作**:解释了make如何通过读取Makefile,检查文件的时间戳,决定哪些目标需要重新构建。
- **指定变量**:变量在Makefile中用于存储值,简化规则的编写。
- **自动推导规则**:make内置了一些隐含规则,可以自动推导出编译和链接的命令。
- **另类风格的makefile**:介绍了不同的Makefile编写风格。
- **清除工作目录过程文件**:如何设置清理目标以删除编译过程中产生的临时文件。
**第三章:Makefile总述**
- **Makefile的内容**:涵盖了Makefile可以包含的各种元素,如规则、变量、函数等。
- **makefile文件的命名**:可以使用多个名字的Makefile,make会尝试找到其中一个。
- **包含其它makefile文件**:使用`include`指令来组合多个Makefile。
- **变量MAKEFILES**:系统变量,用于指定额外的Makefile。
- **变量MAKEFILE_LIST**:包含了所有被读取的Makefile列表。
- **其他特殊变量**:如`SHELL`用于指定shell程序。
- **makefile文件的重建**:当Makefile自身改变时,make会重新读取。
- **重载另外一个makefile**:通过指定-f选项来加载特定的Makefile。
- **make如何解析makefile文件**:详细解析过程,包括变量取值、条件语句和规则定义。
**第四章:Makefile的规则**
- **一个例子**:展示了一个完整的规则实例。
- **规则语法**:规则的基本结构和组成。
- **依赖的类型**:目标可以有多种类型的依赖。
- **文件名使用通配符**:允许使用`*`和`?`匹配多个文件名,但存在潜在问题。
- **函数wildcard**:获取当前目录下匹配通配符的文件列表。
- **目录搜寻**:使用`VPATH`和`vpath`关键字进行文件的跨目录搜索。
- **Makefile伪目标**:如`.PHONY`,确保目标总是被重新构建。
- **强制目标**:没有命令或依赖的规则。
- **空目标文件**:用于确保其他目标的预处理步骤。
- **Makefile的特殊目标**:如`.DEFAULT`、`.PRECIOUS`等。
- **多目标**:一个规则可以更新多个目标。
- **多规则目标**:多个规则更新同一个目标。
- **静态模式**:静态模式规则提供了一种更灵活的规则定义方式。
本手册详细阐述了Makefile的各个方面,对于理解和编写高效、易于维护的Makefile具有很高的参考价值。对于Linux开发者来说,掌握这些内容能显著提高项目构建和维护的效率。
2019-07-13 上传
2021-03-31 上传
2018-11-12 上传
2023-11-25 上传
2023-11-10 上传
2023-06-06 上传
2023-06-03 上传
2024-09-15 上传
2023-08-03 上传
fxf2010
- 粉丝: 0
- 资源: 1
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查