GNU make 中文手册:编写与理解Makefile
需积分: 9 19 浏览量
更新于2024-09-28
收藏 1.29MB PDF 举报
"GNUmake中文手册,讲解了makefile的编写,包括GNUmake的基本概念、Makefile的规则和使用技巧,适合Linux编程者学习"
GNU `make` 是一个强大的自动化构建工具,广泛应用于软件开发中,尤其在Linux环境中。它通过读取名为`Makefile`的配置文件来决定哪些文件需要被更新,以及如何更新。`Makefile`包含了构建项目的一系列规则和指令。
在`Makefile`的编写中,你需要了解以下几个关键知识点:
1. Makefile的结构:
- 规则(Rules):规则定义了目标文件(通常是编译后的程序或对象文件)和它们的依赖文件。格式通常为`target : dependencies... recipe...`,其中`recipe`是当目标文件比依赖文件旧时需要执行的命令。
- 目标(Targets):可以是实际文件,也可以是伪目标(Phony Targets),如`clean`,用于清理工作目录。
- 依赖文件(Dependencies):目标文件需要依赖的其他文件,`make`会检查这些文件的修改时间。
- 命令(Commands):每个规则下的一系列命令,用`\`进行换行,或者每行前加`=`表示命令的开始。
2. 变量(Variables):
- 显式变量(Explicit Variables):用户直接赋值的变量。
- 隐式变量(Implicit Variables):预设的变量,如`CC`代表C编译器,`CXX`代表C++编译器。
- 自动变量(Automatic Variables):如`$@`代表当前目标,`$<`代表第一个依赖项。
3. 自动推导规则(Implicit Rules):
`make`内置了一系列默认规则,比如`.c`文件会自动编译成`.o`,然后链接成可执行文件。
4. 目录搜索(Directory Search):
- VPATH变量:用于指定源文件可能存在的额外目录。
- vpath语句:更精细地控制搜索路径,可以根据文件类型设置。
5. 通配符(Wildcards):
- 通配符`*`用于匹配任意字符序列,`?`匹配单个任意字符,`[]`匹配括号内的任一字符。
- `wildcard`函数用于获取当前目录下符合模式的所有文件名。
6. 条件语句(Conditional Directives):允许基于特定条件执行不同部分的Makefile。
7. 包含其他Makefile:
使用`include`指令可以包含其他Makefile,方便代码复用和组织。
8. 特殊变量:
包括`MAKEFILES`、`MAKEFILE_LIST`等,它们提供了关于当前Makefile运行的信息。
9. 模式规则(Pattern Rules):
使用`%`作为占位符,创建适用于一组文件的通用规则。
编写有效的`Makefile`可以极大地提高开发效率,减少手动编译和链接的工作。理解并熟练运用上述概念和技巧,将有助于你更好地驾驭GNU `make`,进行高效且自动化的软件构建。
2008-11-14 上传
2008-12-12 上传
2011-07-31 上传
2010-04-13 上传
2009-12-18 上传
2024-12-26 上传
2024-12-26 上传
hawkzz
- 粉丝: 1
- 资源: 4
最新资源
- ayotidur
- Exsty-crx插件
- Language-zone
- SCATTERBAR3:创建一个 3-D 条形图,其中条形放置在用户指定的 XY 位置。-matlab开发
- TensorFlow2实战-系列教程14:Resnet实战
- [新闻文章]小虫新闻管理系统V1.0_xcnewsv1.0.rar
- AzureDiagnosticsPipeline:此存储库具有构建Azure诊断DevOps管道的源,以将诊断设置应用于Azure资源(动态)
- 蛇:基于控制台的蛇游戏
- TurboCStudy,c语言编译的源码,c语言项目
- Biorhythm:你的一周过得怎么样?-matlab开发
- koa-template-project:Koa模板项目
- 简洁棕色线条响应式html5模板5598.zip
- Coin Master Free Spins Loader-crx插件
- 苹果手机
- click-and-meet-calendar-generator:生成可打印的日历,以根据德国的COVID-19规则管理“点击并开会”约会
- -123r