Mastering Makefile: A Comprehensive Tutorial
3星 · 超过75%的资源 需积分: 12 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是极好的参考资料。通过学习这些内容,开发者能够高效地管理项目构建过程。
2012-12-14 上传
2021-10-30 上传
2023-06-06 上传
2023-07-29 上传
2023-09-02 上传
2023-06-22 上传
2023-03-16 上传
2023-06-19 上传
海盗Geek
- 粉丝: 0
- 资源: 3
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析