没有合适的资源?快使用搜索试试~ 我知道了~
首页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 使用手册(中译版)
翻译:于凤昌
译者注:本人在阅读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概述
1.1
怎样阅读本手册
1.2
问题和BUG
2
Makefile文件介绍
2.1
规则的格式
2.2
一个简单的Makefile文件
2.3
make处理Makefile文件的过程
2.4
使用变量简化Makefile文件
2.5
让make推断命令
2.6
另一种风格的Makefile文件
2.7
在目录中删除文件的规则
3
编写Makefile文件
3.1
Makefile文件的内容
3.2
Makefile文件的命名
3.3
包含其它的Makefile文件
3.4
变量MAKEFILES
3.5
Makefile文件重新生成的过程
3.6
重载其它Makefile文件
3.7
make读取Makefile文件的过程
4
编写规则
4.1规则的语法
4.2
在文件名中使用通配符
4.2.1
通配符例子
4.2.2
使用通配符的常见错误
4.2.3
函数wildcard
4.3
在目录中搜寻依赖
4.3.1
VPATH:所有依赖的搜寻路径
4.3.2
vpath指令
4.3.3
目录搜寻过程
4.3.4
编写搜寻目录的shell命令
4.3.5
目录搜寻和隐含规则
4.3.6
连接库的搜寻目录
4.4
假想目标
4.5
没有命令或依赖的规则
4.6
使用空目录文件记录事件
4.7
内建的特殊目标名
4.8
具有多个目标的规则
4.9
具有多条规则的目标
4.10
静态格式规则
4.10.1
静态格式规则的语法
4.10.2
静态格式规则和隐含规则
4.11
双冒号规则
4.12
自动生成依赖
5
在规则中使用命令
5.1
命令回显
5.2
执行命令
5.3
并行执行
5.4
命令错误
5.5
中断或关闭make
5.6
递归调用make
5.6.1
变量MAKE的工作方式
5.6.2
与子make通讯的变量
5.6.3
与子make通讯的选项
5.6.4
`--print-directory'选项
5.7
定义固定次序命令
5.8
使用空命令
6
使用变量
6.1
变量引用基础
6.2
变量的两个特色
6.3
变量高级引用技术
6.3.1
替换引用
6.3.2
嵌套变量引用
6.4
变量取值
6.5
设置变量
6.6为变量值追加文本
6.7
override指令
6.8
定义多行变量
6.9
环境变量
6.10
特定目标变量的值
6.11
特定格式变量的值
7
Makefile文件的条件语句
7.1
条件语句的例子
7.2
条件语句的语法
7.3
测试标志的条件语句
8
文本转换函数
8.1
函数调用语法
8.2
字符串替换和分析函数
8.3
文件名函数
8.4
函数foreach
8.5
函数if
8.6
函数call
8.7
函数origin
8.8
函数shell
8.9
控制Make的函数
9
运行make
9.1
指定Makefile文件的参数
9.2
指定最终目标的参数
9.3
代替执行命令
9.4
避免重新编译文件
9.5
变量重载
9.6
测试编译程序
9.7
选项概要
10
使用隐含规则
10.1
使用隐含规则
10.2
隐含规则目录
10.3
隐含规则使用的变量
10.4
隐含规则链
10.5
定义与重新定义格式规则
10.5.1
格式规则简介
10.5.2
格式规则的例子
10.5.3
自动变量
10.5.4
格式匹配
10.5.5
万用规则
10.5.6
删除隐含规则
10.6
定义最新类型的缺省规则
10.7
过时的后缀规则
10.8
隐含规则搜寻算法
11
使用make更新档案文件
11.1档案成员目标
11.2
档案成员目标的隐含规则
11.2.1
更新档案成员的符号索引表
11.3
使用档案的危险
11.4
档案文件的后缀规则
12
GNU make的特点
13
不兼容性和失去的特点
14
Makefile文件惯例
14.1
makefile文件的通用惯例
14.2
makefile文件的工具
14.3
指定命令的变量
14.4
安装路径变量
14.5
用户标准目标
14.6
安装命令分类
15
快速参考
16
make产生的错误
17
复杂的Makefile文件例子
附录
名词翻译对照表
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 文件(该文件有配置过程产
生) 。
2 Makefile 文件介绍
Make 程序需要一个所谓的 Makefile 文件来告诉它干什么。在大多数情况下,Makefile 文件告诉 Make 怎
样编译和连接成一个程序。
本章我们将讨论一个简单的 Makefile 文件,该文件描述怎样将 8 个 C 源程序文件和 3 个头文件编译和连
接成为一个文本编辑器。Makefile 文件可以同时告诉 Make 怎样运行所需要的杂乱无章的命令(例如,清除
操作时删除特定的文件)。如果要看更详细、复杂的 Makefile 文件例子,请参阅
复杂的 Makefile 文件例子
一
章。
当 Make 重新编译这个编辑器时,所有改动的 C 语言源文件必须重新编译。如果一个头文件改变,每一个
包含该头文件的 C 语言源文件必须重新编译,这样才能保证生成的编辑器是所有源文件更新后的编辑器。每
一个 C 语言源文件编译后产生一个对应的 OBJ 文件,如果一个源文件重新编译,所有的 OBJ 文件无论是刚刚
编译得到的或原来编译得到的必须从新连接,形成一个新的可执行文件。
2.1 规则的格式
一个简单的 Makefile 文件包含一系列的“规则”,其样式如下:
目标(target)…: 依赖(prerequiries)…
<tab>命令(command)
…
…
目标(target)通常是要产生的文件的名称,目标的例子是可执行文件或 OBJ 文件。目标也可是一个执行
的动作名称,诸如‘clean’(详细内容请参阅
假想目标
一节)。
依赖是用来输入从而产生目标的文件,一个目标经常有几个依赖。
命令是 Make 执行的动作,一个规则可以含有几个命令,每个命令占一行。注意:每个命令行前面必须
是一个 Tab 字符,即命令行第一个字符是 Tab。这是不小心容易出错的地方。
通常,如果一个依赖发生变化,则需要规则调用命令对相应依赖和服务进行处理从而更新或创建目标。
剩余100页未读,继续阅读
普通网友
- 粉丝: 339
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 数据结构1800题含完整答案详解.doc
- 医疗企业薪酬系统设计与管理方案.pptx
- 界面与表面技术界面理论与表面技术要点PPT学习教案.pptx
- Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf
- 网页浏览器的开发 (2).pdf
- 路由器原理与设计讲稿6-交换网络.pptx
- 火电厂锅炉过热汽温控制系统设计.doc
- 企业识别CIS系统手册[收集].pdf
- 物业管理基础知识.pptx
- 第4章财务预测.pptx
- 《集成电路工艺设计及器件特性分析》——实验教学计算机仿真系.pptx
- 局域网内共享文件提示没有访问权限的问题借鉴.pdf
- 第5章网络营销策略.pptx
- 固井质量测井原理PPT教案.pptx
- 毕业实习总结6篇.doc
- UGNX建模基础篇草图模块PPT学习教案.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0