GNU make工具详解:Makefile编写指南

需积分: 36 0 下载量 111 浏览量 更新于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开发者来说,掌握这些内容能显著提高项目构建和维护的效率。