"GNUmake中文手册,ver-3.8,由徐海兵翻译整理,2004-09-11发布"
GNU Make是用于自动化构建系统的工具,它通过读取名为Makefile的文件来确定如何构建软件项目。这份中文手册详细介绍了如何编写和使用Makefile。
### 第一章:概述
这一章介绍了Makefile的基本概念和预备知识。Makefile是一个包含了编译、链接等构建步骤的文本文件,它帮助用户定义了一系列的规则,使得构建过程可以通过简单的命令执行。
### 第二章:GNU Make介绍
- **Makefile简介**:Makefile包含目标(通常是程序或库)、依赖项(源文件或其他需要的文件)以及如何将依赖项转化为目标的命令。
- **Makefile规则**:规则定义了目标和依赖之间的关系,以及当依赖发生变化时,应执行哪些命令。
- **简单示例**:通常,一个规则包含目标、依赖和命令三部分,如`target: dependency... command...`。
- **make如何工作**:make会检查目标文件的修改时间,如果目标比其依赖项新,就不会执行命令;否则,会运行命令更新目标。
- **指定变量**:变量可以用来存储重复使用的字符串,如`CC=gcc`定义编译器。
- **自动推导规则**:GNU Make内置了一些隐含规则,可以根据文件扩展名自动推导编译和链接命令。
- **另类风格的Makefile**:Makefile的书写风格可以多样化,但保持可读性和一致性很重要。
- **清除工作目录过程文件**:通常在Makefile中会包含清理目标,如`.PHONY: clean`,用来删除编译过程中产生的临时文件。
### 第三章:Makefile总述
- **Makefile的内容**:可以包含目标、依赖、命令、变量定义等。
- **命名**:Makefile文件可以命名为`Makefile`或`makefile`,也可以使用`GNUmakefile`。
- **包含其它makefile**:通过`include`指令,可以将多个Makefile组合在一起。
- **变量MAKEFILES**:此变量可以设置包含的Makefile列表。
- **变量MAKEFILE_LIST**:保存了当前make进程已读取的所有Makefile的列表。
- **其他特殊变量**:还有许多预定义的特殊变量,如`$@`表示目标,`$<`表示第一个依赖项。
- **Makefile文件的重建**:有时需要重新读取Makefile,可以通过`touch`命令更新Makefile的时间戳实现。
- **重载另一个makefile**:使用`-f`或`--file`选项指定不同的Makefile。
### 第四章:Makefile的规则
- **规则语法**:规则的基本结构是`target: dependency... command...`,命令前通常有Tab键。
- **依赖的类型**:可以是具体文件,也可以是伪目标(如`.PHONY`)。
- **文件名通配符**:`*`, `?`, `[...]`等通配符用于匹配一组文件。
- **目录搜寻**:使用`VPATH`变量或`vpath`指令指定搜索路径,用于找到依赖文件。
- **静态模式规则**:允许一条规则匹配多个目标,减少规则数量。
以上是《GNUmake中文手册》的部分内容,手册详细阐述了Makefile的各个方面,包括规则的编写、变量的使用、目录搜索机制、静态模式规则等,对于理解和编写Makefile是极好的参考资料。通过学习和实践,开发者能够更有效地管理复杂的项目构建流程。