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

628.51 KB 81 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档详细介绍了Makefile的书写规则和使用方法,包括规则的结构、变量的定义与使用、命令的书写以及条件判断的应用。规则由目标、依赖和命令组成,目标定义了生成的文件,依赖说明了目标的依赖文件,命令描述了如何生成目标。变量在Makefile中类似于宏,可在目标、依赖、命令中使用,并支持自动化变量如$@和$<。命令可以通过define关键字定义命令包,以提高复用性。条件判断用于根据不同的情况选择执行的规则。文档还提到了自动依赖构建的方法,即通过sed命令生成依赖文件并将其包含在主Makefile中。make命令的执行包括指定Makefile文件、处理条件表达式以及函数的使用。
AI总结
《跟我一起写 Makefile》(PDF 重制版)发行版本 1.0,主要内容如下: --- ### **1. 概述** - **Makefile 作用**:Makefile 是一份 BUILD脚本,告诉 make 命令如何编译和链接程序。 - **Makefile 规则**: - **目标(target)**:可以是 object 文件、可执行文件或标签。 - **依赖关系(prerequisites)**:生成目标所需的文件或其他目标。 - **命令(recipe)**:生成目标所需执行的 shell 命令。 --- ### **2. 书写规则** - **规则结构**:`targets : prerequisites`,后跟命令(以 Tab 开头)。 - **规则举例**: ```makefile foo.o: foo.c defs.h cc -c -g foo.c ``` - **目标**:foo.o。 - **依赖**:foo.c 和 defs.h。 - **命令**:编译 foo.c 生成 foo.o。 - **规则顺序**:Makefile 中的第一条规则中的目标会被视为最终目标。 --- ### **3. 变量** - **变量定义**:类似 C/C++ 宏,可以在目标、依赖、命令等处使用。 - **变量命名**:允许字符、数字、下划线,不允许特殊字符,大小写敏感。 - **变量使用**:`$(变量名)` 或 `${变量名}`,变量值会在使用时展开。 - **示例**: ```makefile objects = program.o foo.o utils.o program : $(objects) cc -o program $(objects) $(objects) : defs.h ``` --- ### **4. 自动化变量** - **常用自动化变量**: - `$@`:目标文件名。 - `$<`:第一个依赖文件名。 - `$^`:所有依赖文件名(以空格分隔)。 - `$?`:所有比目标文件新的依赖文件名(以空格分隔)。 --- ### **5. 自动生成依赖** - **方法**:通过编译器生成依赖文件(如 .d 文件)。 - **示例**: ```makefile %.d: %.c @echo "Generating dependency file $@" @gcc -M $(CPPFLAGS) $< > $@ ``` - **引入依赖文件**:使用 `include` 命令。 ```makefile sources = foo.c bar.c include $(sources:.c=.d) ``` --- ### **6. 条件判断** - **语法**: ```makefile if condition endif ``` - **示例**: ```makefile ifeq ($(CC),gcc) CFLAGS += -Wall endif ``` --- ### **7. 函数** - **内置函数**: - `subst`:字符串替换。 - `patsubst`:模式字符串替换。 - `abspath`:获取绝对路径。 - `wildcard`:匹配文件。 - **示例**: ```makefile sources := $(wildcard *.c) objects := $(patsubst %.c,%.o,$(sources)) ``` --- ### **8. 定义命令包** - **语法**: ```makefile defineCMD 命令1 命令2 endef ``` - **示例**: ```makefile define run-yacc yacc $(firstword $^) mv y.tab.c $@ endef foo.c : foo.y $(run-yacc) ``` --- ### **9. Make 命令** - **退出码**: - 0:成功。 - 1:执行错误。 - 2:无需更新目标。 - **指定 Makefile**: ```bash make -f hchen.mk ``` - **参数**: - `-C dir`:指定目录。 - `-s`:静默模式。 - `-n`:仅显示命令,不执行。 --- ### **总结** 本书系统介绍了 Makefile 的书写规则、变量定义、自动化变量、条件判断、函数、命令定义以及 make 命令的使用方法,通过示例和详细解释帮助读者掌握 Makefile 编写技巧。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 74 页请下载阅读 -
文档评分
请文明评论,理性发言.