GNUmake中文手册:Makefile编写指南

需积分: 36 14 下载量 172 浏览量 更新于2024-07-20 收藏 1.34MB PDF 举报
"这篇文档是GNUmake中文手册的版本3.81,由徐海兵在2004年9月11日翻译整理。它提供了关于如何编写和理解makefile文件的详细指南,涵盖了从基础到高级的make规则和Makefile的各个方面。" 在深入探讨之前,首先了解`make`是一个构建自动化工具,用于根据依赖关系自动执行编译、链接等任务。`makefile`是描述这些任务和依赖关系的文件。 **第二章GNUmake介绍**: 1. **Makefile简介**:一个Makefile通常包含一系列规则,定义了目标文件、它们的依赖以及如何更新这些目标。 2. **Makefile规则**:规则由目标、依赖和命令三部分组成,如`target: dependency1 dependency2 ... ; command1; command2;...`。当目标比依赖新或者依赖不存在时,`make`会运行相应的命令。 3. **简单的示例**:展示了如何创建一个简单的Makefile,比如编译C程序。 4. **make如何工作**:`make`读取Makefile,检查目标文件和依赖文件的时间戳,然后执行必要的命令。 5. **指定变量**:使用`=`, `:=`, `?=`等赋值操作符可以定义变量,用于存储常量或命令。 6. **自动推导规则**:`make`可以自动推导一些常见类型的编译和链接规则,如C/C++程序。 7. **另类风格的makefile**:介绍了不同风格的Makefile编写方式,例如使用tab键缩进。 8. **清除工作目录过程文件**:通常有`.PHONY`目标如`clean`,用于清理编译产生的临时文件。 **第三章:Makefile总述**: 1. **Makefile的内容**:可以包含目标、依赖、命令、变量定义等。 2. **命名**:Makefile文件可以命名为`makefile`, `Makefile`或`GNUmakefile`。 3. **包含其他makefile**:使用`include`指令可以引入其他Makefile,方便管理大型项目。 4. **变量MAKEFILES**:此环境变量可以指定额外的Makefile位置。 5. **变量MAKEFILE_LIST**:存储当前被加载的所有Makefile列表。 6. **特殊变量**:包括预定义的变量,如`$@`表示目标,`$<`表示第一个依赖等。 7. **重建Makefile**:有时需要在Makefile中添加规则来更新自身。 8. **重载makefile**:通过`-f`选项指定不同的Makefile。 9. **解析makefile**:解释了make如何逐行解析规则、变量和条件。 **第四章:Makefile的规则**: 1. **规则例子**:展示了规则的实际应用。 2. **规则语法**:详细讲解了规则的结构和组成部分。 3. **依赖的类型**:可以是普通文件、伪目标(如`.PHONY`)或静态模式目标。 4. **通配符**:`*`, `?`, `[...]`等通配符用于匹配一组文件名。 5. **目录搜寻**:通过`VPATH`变量或`vpath`关键字实现对目录的搜索。 6. **隐含规则**:`make`内置的一些默认编译和链接规则。 7. **特殊目标**:如`.PHONY`、`.SUFFIXES`、`.PRECIOUS`等,它们有特定的行为。 8. **多目标**:一个规则可以更新多个目标。 9. **多规则目标**:一个目标可以有多个规则,遵循优先级规则。 10. **静态模式**:允许更灵活的规则定义,避免隐含规则冲突。 这份手册详尽地阐述了`make`工具的核心概念和使用技巧,对于编写和维护Makefile文件非常有帮助,无论是新手还是经验丰富的开发者都能从中受益。通过学习,你可以有效地自动化你的构建过程,提高开发效率。