理解Makefile:静态模式与构建规则
需积分: 49 45 浏览量
更新于2024-08-08
收藏 443KB PDF 举报
"跟我一起写 Makefile - 静态模式-tms320f28379d TI开发板教程"
在编程和构建软件项目时,`Makefile` 是一个非常重要的工具,用于自动化编译和链接过程。本教程主要讲解了 `Makefile` 的静态模式,这是在 `Makefile` 规则中定义多目标文件的一种灵活方法。静态模式允许我们创建具有通用性的规则,以便于管理项目中的多个相似文件。
标题提及的 "静态模式" 是在 `Makefile` 中定义规则的一种方式,它涉及到三个关键概念:
1. **targets**: 这是一个目标文件的列表,可以包含通配符,表示一组文件。例如,`objects = foo.o bar.o` 定义了 `foo.o` 和 `bar.o` 作为目标文件。
2. **target-pattern**: 目标模式是定义 `targets` 的模式,用来匹配目标文件的一般形式。在静态模式中,`%.o` 表示所有以 `.o` 结尾的目标文件。
3. **prereq-patterns**: 依赖模式是针对 `target-pattern` 定义的,它再次定义了目标集的依赖关系。例如,`%.c` 意味着对于每个由 `%.o` 匹配的目标,其依赖文件是对应的源代码文件,即以 `.c` 结尾的文件。
在静态模式中,`%` 符号是一个特殊字符,代表任何字符序列。如果文件名中包含 `%`,需要使用反斜杠 `\` 进行转义,以区分真实文件名中的 `%`。例如,如果有一个名为 `myfile.o` 的目标,`%.o` 将匹配 `myfile.o`,而 `%.c` 则会推断其依赖为 `myfile.c`。
通过这样的规则,我们可以编写简洁且强大的 `Makefile`,如以下示例所示:
```makefile
objects = foo.o bar.o
all: $(objects)
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
```
在这个例子中,`$(objects)` 是目标文件的列表,`%.o: %.c` 是静态模式规则,表示每一个 `.o` 文件依赖于相应的 `.c` 文件。`$(CC) -c $(CFLAGS) $< -o $@` 是编译命令,其中 `$<` 表示第一个依赖文件(`.c` 文件),`$@` 表示目标文件(`.o` 文件)。
标签 "跟我一起写 Makefile" 暗示这是一个逐步指导如何编写 `Makefile` 的教程,涵盖了 `Makefile` 的基本概念,如规则、变量、自动推导等,并深入到高级特性,如条件判断、函数使用等。通过学习这个教程,读者将能够更好地理解和编写高效的 `Makefile`,从而简化项目构建过程。
247 浏览量
2012-12-11 上传
293 浏览量
309 浏览量
点击了解资源详情
2021-09-30 上传
2022-12-06 上传
2022-12-06 上传
1036 浏览量
菊果子
- 粉丝: 50
- 资源: 3764
最新资源
- pip-chill:更轻松的“点冻结”
- 实存帐存对比表DOC
- jquery.page分页控件.zip
- sql-q:JDBC 模板
- 数据结构
- ange-button
- stable-baselines:稳定基线的镜子
- 电子功用-太阳能电池板激光刻划系统及刻划方法
- 材料调拨管理方法DOC
- ut-ussd
- NewRepo:创建一个空白仓库
- galgebra:SymPy的符号几何AlgebraCalculus软件包
- 在 C# 中使用 MATLAB 结构体和 Builder NE:“MATLAB 艺术”帖子的代码 - 展示了如何在 MATLAB 和 C# 之间传递结构体。-matlab开发
- mysql-8.0.18-winx64.zip
- js特效脚本含源码和说明迅雷网七屏flash广告轮换
- 电子功用-带有市电互补功能的太阳能模块化嵌入式控制器