GNUmake中文手册:Makefile编写指南
需积分: 36 7 浏览量
更新于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`等预定义目标的作用。
- **多目标和多规则目标**:一个规则可以更新多个目标,多个规则也可以更新同一个目标。
- **静态模式**:使用模式规则进行更灵活的文件匹配和构建规则定义。
这份手册不仅涵盖了基本概念,还深入到高级特性和技巧,对于想要深入了解和优化构建流程的开发者来说非常有价值。通过学习和实践,开发者可以更高效地管理项目构建,减少重复工作,提高开发效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-09-24 上传
2021-03-09 上传
2020-07-06 上传
2014-02-22 上传
2021-09-30 上传
hkx1n
- 粉丝: 119
- 资源: 208
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍