Mastering Makefile: A Comprehensive Tutorial

3星 · 超过75%的资源 需积分: 12 8 下载量 133 浏览量 更新于2024-07-20 1 收藏 761KB PDF 举报
"Makefile经典教程" Makefile是软件构建工具,用于自动化编译和链接过程,极大地提高了开发效率。本教程将详细讲解Makefile的各个核心知识点。 ### 0.1 关于程序的编译和链接 在编程中,源代码需要经过编译和链接两个步骤才能转化为可执行文件。编译器将源代码转换为对象文件,而链接器则将这些对象文件组合成最终的可执行程序。 ### 1 Makefile介绍 1.1 Makefile的规则 Makefile由一系列规则组成,每个规则定义了一个或多个目标文件以及如何生成它们。规则通常包括目标、依赖项和命令。 1.2 一个示例 ```make target: dependency1 dependency2 command1 command2 ``` 其中,`target`是目标文件,`dependency1`和`dependency2`是依赖文件,`command1`和`command2`是当目标文件比依赖文件旧或者依赖文件不存在时执行的命令。 1.3 make是如何工作的 make会检查目标文件和依赖文件的时间戳,如果目标文件较旧或不存在,就会执行对应的命令来更新目标。 1.4 makefile中使用变量 变量可以存储文本,简化Makefile的编写。例如: ```make CC = gcc CFLAGS = -Wall all: prog.exe prog.exe: prog.o $(CC) $(CFLAGS) -o $@ $^ ``` 1.5 让make自动推导 make可以自动推导编译和链接的目标文件的依赖关系,比如`%.o: %.c`表示`.c`文件对应`.o`目标。 1.6 另类风格的makefile 有些Makefile使用不同的风格,比如GNUMakefile风格,它支持更复杂的语法和特性。 1.7 清空目标文件的规则 清理规则如`clean:`允许删除所有中间和目标文件。 ### 2 Makefile总述 2.1 Makefile里有什么? Makefile包含规则、变量定义、函数调用等。 2.2 Makefile的文件名 默认Makefile名称为`Makefile`或`makefile`,但可以通过`-f`选项指定其他文件。 2.3 引用其它的Makefile 通过`include`指令可以引入其他Makefile。 2.4 环境变量MAKEFILES 此变量可以包含额外的Makefile路径。 2.5 make的工作方式 make会按顺序执行规则,处理依赖关系。 ### 3 Makefile书写规则 3.x章节详细讲解了各种规则的写法,包括通配符、文件搜索、伪目标、多目标、静态模式和自动生成依赖性。 ### 4 Makefile书写命令 4.x章节涉及命令的显示、执行、错误处理、嵌套执行make和命令包装,以及如何使用变量。 ### 使用变量 5.x章节介绍了变量的各种用法,如基础用法、变量中的变量、高级用法、追加值、override指示符、多行变量、环境变量、目标变量和模式变量。 ### 使用函数 6.x章节涵盖了函数的调用语法,以及各种函数的用途,如字符串处理、文件名操作、foreach、if、call、origin、shell、控制make的函数等。 ### make的运行 7.x章节讨论了make的运行方式,如退出码、指定Makefile、指定目标、检查规则和参数。 ### 隐含规则 8.x章节介绍了如何利用make内置的隐含规则来简化Makefile,以及如何自定义隐含规则。 这个Makefile经典教程全面覆盖了Makefile的各个方面,对于理解和编写Makefile是极好的参考资料。通过学习这些内容,开发者能够高效地管理项目构建过程。