GNUmake中文手册:Makefile编写指南
需积分: 36 33 浏览量
更新于2024-07-29
收藏 1.34MB PDF 举报
"GNUmake中文手册,ver-3.81,由徐海兵于2004-09-11翻译整理,详细介绍了GNUmake的使用和Makefile的编写,涵盖概述、基本概念、Makefile总述、规则等多个章节,是学习和理解GNUmake的宝贵资料。"
GNU Make是一个广泛应用的自动化构建工具,它根据Makefile中的规则来编译、链接和其他方式处理项目文件。这份手册提供了关于GNU Make的深入指导,包括以下几个关键知识点:
1. **概述**:介绍GNU Make的基本功能和目的,以及学习Makefile前应具备的基础知识。
2. **GNUmake介绍**:
- **Makefile简介**:解释了Makefile的作用,它是如何帮助管理项目的构建过程。
- **Makefile规则**:规则定义了目标文件和它们的依赖关系,以及如何更新这些目标。
- **简单的示例**:展示了基础的Makefile结构和用法。
- **make如何工作**:描述了Make如何读取和解析Makefile,以及执行命令的顺序。
- **指定变量**:变量在Makefile中的使用,用于存储常量值和动态计算。
- **自动推导规则**:Make内置的一些规则可以自动推断如何构建特定类型的文件。
- **另类风格的makefile**:讨论了不同的Makefile书写风格。
- **清除工作目录过程文件**:如何在Makefile中定义清理目标以删除临时文件。
3. **Makefile总述**:
- **Makefile的内容**:解释了Makefile可以包含的各种指令和部分。
- **makefile文件的命名**:Makefile的命名规范和默认查找规则。
- **包含其它makefile文件**:如何通过`include`指令整合多个Makefile。
- **变量MAKEFILES**:此变量可以指定额外的Makefile路径。
- **变量MAKEFILE_LIST**:包含了所有被读取的Makefile列表。
- **其他特殊变量**:如目标目录(`$(CURDIR)`), 当前Makefile名(`$(MAKEFILE_LIST)`等)。
- **makefile文件的重建**:如何让Makefile自身成为构建的一部分。
- **重载另外一个makefile**:如何用新的Makefile替换当前的。
- **make如何解析makefile文件**:详细阐述Make解析规则和变量赋值的过程。
4. **Makefile的规则**:
- **规则语法**:规则的构成,包括目标、依赖和命令行。
- **依赖的类型**:直接依赖和间接依赖的概念。
- **文件名使用通配符**:如何使用`*`, `?`等通配符匹配多个文件名,以及其潜在问题。
- **函数wildcard**:获取当前目录下匹配通配符的文件列表。
- **目录搜寻**:通过`VPATH`变量和`vpath`关键字实现跨目录搜索。
- **Makefile伪目标**:如`.PHONY`,确保目标总是被重新构建,不受文件系统影响。
- **强制目标和空目标文件**:没有命令或依赖的目标,用于控制构建流程。
- **Makefile的特殊目标**:如`.SUFFIXES`, `.DEFAULT`等预定义目标的作用。
- **多目标和多规则目标**:一个规则可以更新多个目标,多个规则也可以更新同一个目标。
- **静态模式**:使用模式规则进行更灵活的文件匹配和构建规则定义。
这份手册不仅涵盖了基本概念,还深入到高级特性和技巧,对于想要深入了解和优化构建流程的开发者来说非常有价值。通过学习和实践,开发者可以更高效地管理项目构建,减少重复工作,提高开发效率。
2023-06-27 上传
2023-05-21 上传
2023-09-08 上传
2023-04-22 上传
2023-07-27 上传
2023-12-07 上传
hkx1n
- 粉丝: 119
- 资源: 216
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器