Mastering Makefile: A Comprehensive Tutorial
3星 · 超过75%的资源 需积分: 12 77 浏览量
更新于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是极好的参考资料。通过学习这些内容,开发者能够高效地管理项目构建过程。
121 浏览量
233 浏览量
1183 浏览量
2025-01-08 上传
2025-01-08 上传
2025-01-08 上传
海盗Geek
- 粉丝: 0
- 资源: 3
最新资源
- 对ASP.NET MVC项目中的视图做单元测试.txt
- java面试题 面试 java
- AJAX and java(英文)
- java程序员面试题
- Java最著名的开源项目
- Java领域的十大产品
- U盘 硬盘 文件夹自定义图标及背景
- IDL用戶培訓教程(初級入門)
- 屏蔽浏览器的后退按钮
- 如何在虚拟机安装Linux
- GEC2410开发板实战手册
- CCNA Boson NetSim 入门实战
- ps技巧,使用的一些常用技巧
- Configuring_FICO_Lawrence_Rebello
- Eclipse in Action A Guide for the Java Developer.pdf
- Struts快速学习指南