"这篇文档是GNU makefile的中文手册,主要涵盖了makefile编程的基础知识,包括makefile的概述、规则、变量以及高级特性等。它由徐海兵在2004年9月11日翻译整理,适用于ver-3.81版本的GNU make。"
在GNU makefile的编程中,makefile是构建自动化工具,它定义了一系列的规则来编译、链接程序或者执行其他任务。这份中文手册首先介绍了makefile的基本概念,强调了其在软件构建过程中的重要性。
第二章详细讲解了GNU make的使用。Makefile由规则组成,规则定义了目标(通常是文件)及其依赖项,以及当依赖项改变时需要执行的命令。Makefile规则的基本结构包括目标、依赖和命令,例如:
```makefile
target: dependency
command
```
在规则的定义中,`target`是需要生成的文件,`dependency`是目标依赖的文件,而`command`是在依赖更新后运行的命令。make会根据依赖关系自动决定哪些命令需要执行。
手册还介绍了如何指定变量,变量可以存储值,简化Makefile的编写,如`CC`通常用来保存C编译器的路径。此外,还提到了自动推导规则,即make可以自动推断某些类型的依赖关系,如源文件如何生成目标文件。
第三章深入讨论了Makefile的总体结构,包括Makefile的内容、命名、包含其他Makefile文件的机制,以及如何通过`MAKEFILES`和`MAKEFILE_LIST`等特殊变量来管理多个Makefile。还有make解析Makefile文件的过程,包括变量赋值、条件语句和规则定义等。
第四章则重点讲述了Makefile的规则,包括各种依赖类型、通配符的使用、目录搜索、伪目标、静态模式规则等。通配符允许匹配一组文件,如`*`代表任意字符,但有时需要配合`wildcard`函数使用以避免一些问题。目录搜索则允许在多个目录中查找依赖文件。此外,还讲解了特殊目标如`.PHONY`用于标记伪目标,确保每次构建时都会执行对应的命令。
手册中的内容丰富且全面,不仅适合初学者理解makefile的基础,也对经验丰富的开发者提供了深入的指南,帮助他们更高效地管理复杂的构建过程。