GNU make中文手册:Makefile编写指南
需积分: 12 38 浏览量
更新于2024-07-18
1
收藏 2.02MB PDF 举报
"GNUmake中文手册,由徐海兵翻译整理,版本ver-3.81,涵盖概述、GNUmake介绍、Makefile总述以及Makefile的规则等内容,旨在帮助不擅长阅读英文文档的用户理解make工具的使用。"
在编程领域,`Makefile`是用于自动化构建项目的工具,尤其是C/C++项目,它告诉`make`程序哪些文件需要被编译或链接,以及如何执行这些操作。这份中文手册详细介绍了`GNU make`,它是`make`的最广泛使用的实现之一。
**第一章:概述**
章节简要介绍了`make`的基本概念,包括它的作用和基本工作原理,以及读者需要了解的基础知识,比如命令行和简单的文本编辑。
**第二章:GNUmake介绍**
这一章详细讲解了`Makefile`的构成,如:
- **Makefile简介**:介绍了`Makefile`的结构和作用,它是`make`程序的配置文件。
- **Makefile规则**:规则定义了如何从一个或多个源文件生成目标文件,包括目标、依赖和命令。
- **简单的示例**:展示了基础的`Makefile`编写方式。
- **make如何工作**:解释了`make`如何解析`Makefile`,决定哪些文件需要更新。
- **指定变量**:变量用于存储重复使用的字符串,简化`Makefile`。
- **自动推导规则**:`make`可以自动推断某些类型的文件如何生成。
- **另类风格的makefile**:介绍了一些非标准的写法。
- **清除工作目录过程文件**:`clean`目标用于清理编译过程中产生的临时文件。
**第三章:Makefile总述**
此章深入讨论`Makefile`的高级特性,如:
- **Makefile的内容**:包括目标、依赖、命令、变量等元素。
- **makefile文件的命名**:`make`默认查找名为`Makefile`或`makefile`的文件。
- **包含其它makefile文件**:通过`include`指令合并多个`Makefile`。
- **变量MAKEFILES**:系统环境变量,用于指定额外的`Makefile`位置。
- **变量MAKEFILE_LIST**:包含了`make`正在处理的所有`Makefile`列表。
- **其他特殊变量**:介绍了一些预定义的`make`变量。
- **makefile文件的重建**:如何让`make`更新`Makefile`自身。
- **重载另外一个makefile**:如何切换到不同的`Makefile`进行构建。
- **make如何解析makefile文件**:解析规则、变量取值、条件语句等的细节。
**第四章:Makefile的规则**
这部分详细讲解了规则的各种方面:
- **规则语法**:包括依赖和命令的书写格式。
- **依赖的类型**:如显式依赖和隐含依赖。
- **文件名使用通配符**:`*`和`?`等通配符在文件名中的应用。
- **目录搜寻**:`VPATH`变量和`vpath`关键字用于指定搜索源文件的目录。
- **Makefile伪目标**:如`.PHONY`,确保目标总是被重新执行。
- **强制目标**:没有命令或依赖的规则。
- **空目标文件**:用于表示依赖关系但不生成实际文件的目标。
- **特殊目标**:如`.SILENT`, `.DELETE_ON_ERROR`等,控制`make`的行为。
- **多目标**:一个规则可以更新多个目标。
- **多规则目标**:针对同一目标的不同规则。
- **静态模式**:允许更灵活的规则匹配。
这份手册对于理解和编写`Makefile`非常有帮助,无论是初学者还是经验丰富的开发者,都能从中获取有价值的信息。通过学习,读者将能够有效地组织和自动化他们的构建过程。
2021-05-27 上传
2009-12-14 上传
2022-12-31 上传
2018-06-02 上传
2018-05-28 上传
点击了解资源详情
嵌入式修行僧
- 粉丝: 0
- 资源: 11
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析