| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档详细介绍了Makefile的基本结构和使用方法,包括显式规则、隐式规则、变量定义、指令和注释。作者通过示例展示了如何编写Makefile,并解释了Makefile在编译和链接过程中的作用。文档还涉及了Makefile的文件名、包含其他Makefile的方法,以及如何处理文件依赖关系和清空目录规则等内容。 | ||
| AI总结 | ||
# Makefile 介绍与使用指南
## 1. 概述
- **Makefile 的作用**:用于定义程序的编译和链接规则,实现自动化构建,特别适用于大型工程。
- **优势**:减少重复操作,提高效率,明确文件依赖关系,支持条件编译和复杂操作。
- **适用场景**:Unix 系统下的软件开发,尤其是涉及大量源文件和模块的项目。
## 2. Makefile 基础
### 2.1 Makefile 的规则
- **结构**:`target: prerequisites recipe`
- `target`:目标文件(可执行文件或中间文件)。
- `prerequisites`:生成目标所需的依赖文件。
- `recipe`:生成目标的命令(需以Tab键开头)。
### 2.2 示例
```makefile
edit: main.o kbd.o command.o display.o insert.o search.o files.o util.s.o
cc -o edit $(objects)
main.o: main.c defs.h
cc -c main.c
```
### 2.3 核心内容
- **显式规则**:明确指定目标、依赖和命令。
- **隐式规则**:利用 `make` 的自动推导功能简化书写。
- **变量**:用于定义字符串,便于复用。
- **指令**:包括包含其他 `Makefile` 和条件判断。
- **注释**:使用 `#`,需用反斜杠转义。
### 2.4 文件名
- 默认搜索顺序:`GNUmakefile`、`makefile`、`Makefile`。
- 建议使用 `Makefile`。
### 2.5 包含其他 Makefile
- 使用 `include` 指令,支持通配符和变量扩展。
## 3. 书写规则
### 3.1 示例
```makefile
objects = main.o kbd.o command.o display.o insert.o search.o files.o util.s.o
edit: $(objects)
cc -o edit $(objects)
$(objects): defs.h
cc -c $<
```
### 3.2 依赖关系
- 明确目标文件的依赖,确保编译顺序正确。
### 3.3 通配符与文件搜索
- 使用通配符(如 `*.c`)和文件搜索功能简化依赖关系。
### 3.4 伪目标
- 用于定义非文件目标(如 `clean`),需用 `.PHONY` 标记。
### 3.5 多目标与静态模式
- 支持多目标编译,静态模式适用于固定模式的文件生成。
### 3.6 自动生成依赖性
- 使用 `#include` 指令自动生成依赖文件(如 `.d` 文件)。
## 4. 书写命令
- **显示命令**:输出执行过程。
- **错误处理**:使用 `-` 前缀忽略错误。
- **嵌套执行**:通过 `make -f` 指定其他 `Makefile`。
## 5. 变量使用
- **变量定义**:简化命令和依赖关系。
- **自动推导**:利用 `make` 的自动推导功能生成依赖。
## 6. 清空规则
- 常见清空规则:
```makefile
.PHONY: clean
clean:
-rm edit $(objects)
```
## 7. 其他注意事项
- **环境变量**:`MAKEFILES` 可指定多个 `Makefile`。
- **工作方式**:`make` 根据文件时间戳判断是否需要重新编译。
## 8. 开发者介绍
- **Richard Stallman**:GNU 项目的创始人,`make` 的设计者之一。
- **Roland McGrath**:主要维护 GNU Make。
## 总结
Makefile 是 Unix 开发中的核心工具,通过定义编译规则和依赖关系,实现自动化构建。掌握 Makefile 的编写技巧对提高开发效率至关重要。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
74 页请下载阅读 -
文档评分














跟我一起写 Makefile (PDF 重制版)