搜索

pdf文档 跟我一起写 Makefile (PDF 重制版) 推荐

628.51 KB 81 页 8 下载 255 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.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 页请下载阅读 -
文档评分
请文明评论,理性发言.