没有合适的资源?快使用搜索试试~ 我知道了~
makefile详解中文版-详细描写makefile语法
需积分: 9 2 下载量 10 浏览量
2022-03-26
13:23:13
上传
评论
收藏 515KB PDF 举报
温馨提示
试读
99页
makefile详解
资源推荐
资源详情
资源评论
GNU Make 使用手册(中译版)
翻译:于凤昌
译者注:本人在阅读 Linux 源代码过程中发现如果要全面了解 Linux 的结构、理解 Linux 的
编程总体设计及思想必须首先全部读通 Linux 源代码中各级的 Makefile 文件。目前,在网上
虽然有一些著作,但都不能全面的解释 Linux 源代码中各级的 Makefile 文件,因此本人认真
阅读了 GNU Make 使用手册(3.79)版原文,在此基础上翻译了该手册,以满足对 Linux
源代码有兴趣或者希望采用 GCC 编写程序但对缺乏 GNU Make 全面了解之人士的需要。本
人是业余爱好不是专业翻译人士,如果有问题请通过电子信箱与我联系共同商讨,本人的
E-mail 为:yfc70@public2.lyptt.ha.cn
。注意在文章中出现的斜体加粗字表示章节。
GNU make Version 3.79
April 2000
Richard M. Stallman and Roland McGrath
目录
1 Make 概述 ..................................................................................................................................... 5
1.1 怎样阅读本手册 ................................................................................................................ 5
1.2 问题和 BUG ......................................................................................................................... 5
2 Makefile 文件介绍 ...................................................................................................................... 6
2.1 规则的格式 ....................................................................................................................... 6
2.2 一个简单的 Makefile 文件 .............................................................................................. 6
2.3 make 处理 makefile 文件的过程 .................................................................................... 7
2.4 使用变量简化 makefile 文件 .......................................................................................... 8
2.5 让 make 推断命令 ............................................................................................................. 9
2.6 另一种风格的 makefile 文件 ......................................................................................... 9
2.7 在目录中删除文件的规则 ............................................................................................. 10
3 编写 makefile 文件 ................................................................................................................... 10
3.1 makefile 文件的内容 .................................................................................................... 10
3.2 makfile 文件的命名 ...................................................................................................... 11
3.3 包含其它的 makefile 文件 ........................................................................................... 11
3.4 变量 MAKEFILES .............................................................................................................. 12
3.5 makefile 文件重新生成的过程 .................................................................................... 12
3.6 重载其它 makefile 文件 ............................................................................................... 13
3.7 make 读取 makefile 文件的过程 .................................................................................. 14
4 编写规则 ...................................................................................................................................... 14
4.1 规则的语法 ...................................................................................................................... 15
4.2 在文件名中使用通配符 ................................................................................................. 15
4.3 在目录中搜寻依赖 .......................................................................................................... 17
4.4 假想目标 .......................................................................................................................... 20
4.5 没有命令或依赖的规则 ................................................................................................. 21
4.6 使用空目标文件记录事件 .............................................................................................. 22
4.7 内建的特殊目标名 ......................................................................................................... 22
4.8 具有多个目标的规则 ..................................................................................................... 23
4.9 具有多条规则的目标 ..................................................................................................... 24
4.10 静态格式规则 ............................................................................................................... 24
4.11 双冒号规则 .................................................................................................................... 25
4.12 自动生成依赖 ............................................................................................................... 26
5 在规则中使用命令 ...................................................................................................................... 27
5.1 命令回显 ......................................................................................................................... 27
5.2 执行命令 .......................................................................................................................... 28
5.3 并行执行 ......................................................................................................................... 29
5.4 命令错误 .......................................................................................................................... 29
5.5 中断或关闭 make ............................................................................................................. 30
5.6 递归调用 make ................................................................................................................. 30
5.7 定义固定次序命令 .......................................................................................................... 34
5.8 使用空命令 ..................................................................................................................... 35
6 使用变量 ..................................................................................................................................... 35
6.1 变量引用基础 ................................................................................................................. 35
6.2 变量的两个特色 ............................................................................................................. 36
6.3 变量引用高级技术 .......................................................................................................... 37
6.4 变量取值 .......................................................................................................................... 40
6.5 设置变量 .......................................................................................................................... 40
6.6 为变量值追加文本 ......................................................................................................... 41
6.7 override 指令 ................................................................................................................ 42
6.8 定义多行变量 .................................................................................................................. 42
6.9 环境变量 ......................................................................................................................... 43
6.10 特定目标变量的值 ....................................................................................................... 43
6.11 特定格式变量的值 ....................................................................................................... 44
7 makefile 文件的条件语句 ........................................................................................................ 44
7.1 条件语句的例子 .............................................................................................................. 44
7.2 条件语句的语法 .............................................................................................................. 45
7.3 测试标志的条件语句 ...................................................................................................... 47
8 文本转换函数 ............................................................................................................................. 47
8.1 函数调用语法 .................................................................................................................. 47
8.2 字符串替换和分析函数 .................................................................................................. 48
8.3 文件名函数 ...................................................................................................................... 50
8.4 函数 foreach ................................................................................................................... 51
8.5 函数 if ............................................................................................................................. 52
8.6 函数 call ......................................................................................................................... 52
8.7 函数 origin ..................................................................................................................... 53
8.8 函数 shell ...................................................................................................................... 54
8.9 控制 make 的函数 ........................................................................................................... 54
9 运行 make .................................................................................................................................... 55
9.1 指定 makefile 文件的参数 ........................................................................................... 55
9.2 指定最终目标的参数 ...................................................................................................... 55
9.3 代替执行命令 ................................................................................................................. 57
9.4 避免重新编译文件 .......................................................................................................... 57
9.5 变量重载 .......................................................................................................................... 58
9.6 测试编译程序 ................................................................................................................. 58
9.7 选项概要 ......................................................................................................................... 59
10 使用隐含规则 ........................................................................................................................... 61
10.1 使用隐含规则 ............................................................................................................... 62
10.2 隐含规则目录 ................................................................................................................ 62
10.3 隐含规则使用的变量 .................................................................................................... 65
10.4 隐含规则链 ................................................................................................................... 66
10.5 定义与重新定义格式规则 ............................................................................................ 67
10.6 定义最新类型的缺省规则 ........................................................................................... 71
10.7 过时的后缀规则 ........................................................................................................... 72
10.8 隐含规则搜寻算法 ........................................................................................................ 73
11 使用 make 更新档案文件 .......................................................................................................... 74
11.1 档案成员目标 ................................................................................................................ 74
11.2 档案成员目标的隐含规则 ........................................................................................... 74
11.3 使用档案的危险 ........................................................................................................... 75
11.4 档案文件的后缀规则 ................................................................................................... 76
12 GNU make 的特点 ...................................................................................................................... 76
13 不兼容性和失去的特点 ........................................................................................................... 78
14 makefile 文件惯例 .................................................................................................................. 79
14.1 makefile 文件的通用惯例 .......................................................................................... 79
14.2 makefile 文件的工具 .................................................................................................. 80
14.3 指定命令的变量 ........................................................................................................... 80
14.4 安装路径变量 ................................................................................................................ 81
14.5 用户标准目标 ................................................................................................................ 84
14.6 安装命令分类 ............................................................................................................... 87
15 快速参考 ................................................................................................................................... 89
16 make 产生的错误 ...................................................................................................................... 92
17 复杂的 makfile 文件例子 ....................................................................................................... 94
脚注 ................................................................................................................................................ 98
名词翻译对照表 ............................................................................................................................. 98
1 Make 概述
Make 可自动决定一个大程序中哪些文件需要重新编译,并发布重新编译它们的命令。
本版本 GNU Make 使用手册由 Richard M. Stallman and Roland McGrath 编著,是从 Paul D.
Smith 撰写的 V3.76 版本发展过来的。
GNU Make 符合
IEEE Standard 1003.2-1992
(POSIX.2) 6.2 章节的规定。
因为 C 语言程序更具有代表性,所以我们的例子基于 C 语言程序,但 Make 并不是仅仅
能够处理 C 语言程序,它可以处理那些编译器能够在 Shell 命令下运行的的各种语言的程序。
事实上,GNU Make 不仅仅限于程序,它可以适用于任何如果一些文件变化导致另外一些文
件必须更新的任务。
如果要使用 Make,必须先写一个称为 Makefile 的文件,该文件描述程序中各个文件之
间的相互关系,并且提供每一个文件的更新命令。在一个程序中,可执行程序文件的更新依
靠 OBJ 文件,而 OBJ 文件是由源文件编译得来的。
一旦合适的 Makefile 文件存在,每次更改一些源文件,在 shell 命令下简单的键入:
make
就能执行所有的必要的重新编译任务。Make 程序根据 Makefile 文件中的数据和每个文件更
改的时间戳决定哪些文件需要更新。对于这些需要更新的文件,Make 基于 Makefile 文件发
布命令进行更新,进行更新的方式由提供的命令行参数控制。具体操作请看
运行 Make
章节。
1.1 怎样阅读本手册
如果您现在对 Make 一无所知或者您仅需要了解对 make 的普通性介绍,请查阅前几章
内容,略过后面的章节。前几章节是普通介绍性内容,后面的章节是具体的专业、技术内容。
如果您对其它 Make 程序十分熟悉,请参阅
GNU Make 的特点
和
不兼容性和失去的特点
部分,
GNU Make 的特点
这一章列出了 GNU Make 对 make 程序的扩展,
不兼容和失去的特点
一章解释了其它 Make 程序有的特征而 GNU Make 缺乏的原因。
对于快速浏览者,请参阅
选项概要、快速参考
和
内建的特殊目标名
部分。
1.2 问题和 BUG
如果您有关于 GNU Make 的问题或者您认为您发现了一个 BUG,请向开发者报告;我们
不能许诺我们能干什么,但我们会尽力修正它。在报告 BUG 之前,请确定您是否真正发现了
BUG,仔细研究文档后确认它是否真的按您的指令运行。如果文档不能清楚的告诉您怎么做,
也要报告它,这是文档的一个 BUG。
在您报告或者自己亲自修正 BUG 之前,请把它分离出来,即在使问题暴露的前提下尽可
能的缩小 Makefile 文件。然后把这个 Makefile 文件和 Make 给出的精确结果发给我们。同
时请说明您希望得到什么,这可以帮助我们确定问题是否出在文档上。
一旦您找到一个精确的问题,请给我们发 E-mail,我们的 E-mail 地址是:
bug-make@gnu.org
在邮件中请包含您使用的 GNU Make 的版本号。您可以利用命令‘make--version’得到
版本号。同时希望您提供您的机器型号和操作系统类型,如有可能的话,希望同时提供
config.h 文件(该文件有配置过程产生)。
剩余98页未读,继续阅读
资源评论
sunquanguang01
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功