资源预览内容
第1页 / 共79页
第2页 / 共79页
第3页 / 共79页
第4页 / 共79页
第5页 / 共79页
第6页 / 共79页
第7页 / 共79页
第8页 / 共79页
第9页 / 共79页
第10页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
G NU M a k e 使用手册(中译版)G NU M a k e 使用手册(中译版)翻译:于凤昌 译者注:本人在阅读Li n u x 源代码过程中发现如果要全面了解Li n u x 的结构、理解Li n u x 的编程总体设计及思想必须首先全部读通 Li n u x 源代码中各级的M a k e f i l e 文件。目前,在网上虽然有一些著作,但都不能全面的解释Li n u x 源代码中各级的M a k e f i l e 文件, 因此本人认真阅读了G NU M a k e 使用手册(3. 7 9)版原文,在此基础上翻译了该手册,以满足对Li n u x 源代码有兴趣或者希望采 用G CC编写程序但对缺乏G NU M a k e 全面了解之人士的需要。本人是业余爱好不是专业翻译人士,如果有问题请通过电子信箱 与我联系共同商讨,本人的E-m a i l 为:y f c 7 0 p u b l i c 2 . l y p t t . h a . c n 。注意在文章中出现的斜体加粗字表示章节。G NU m a k e Ve r s i o n 3. 7 9A p r i l 2 0 0 0Ri c h a r d M . St a l l m a n a n d Ro l a n d M c G r a t h目录1 m a k e 概述 1. 1 怎样阅读本手册 1. 2 问题和BU G 2 M a k e f i l e 文件介绍 2 . 1 规则的格式 2 . 2 一个简单的M a k e f i l e 文件 2 . 3m a k e 处理M a k e f i l e 文件的过程 2 . 4使用变量简化M a k e f i l e 文件 2 . 5让m a k e 推断命令 2 . 6 另一种风格的M a k e f i l e 文件 2 . 7 在目录中删除文件的规则 3 编写M a k e f i l e 文件 3. 1M a k e f i l e 文件的内容 3. 2 M a k e f i l e 文件的命名 3. 3包含其它的M a k e f i l e 文件 3. 4变量M A K EFILES 3. 5M a k e f i l e 文件重新生成的过程 3. 6 重载其它M a k e f i l e 文件 3. 7 m a k e 读取M a k e f i l e 文件的过程 4 编写规则 4. 1规则的语法 h t t p : / / l s e c . c c . a c . c n / p e a c e / a r t i c l e s / g n u m a k e t r a n s l a t e d . h t m l (第 17 9 页)2 0 0 6 -8 -18 18 : 49: 0 0G NU M a k e 使用手册(中译版)4. 2 在文件名中使用通配符 4. 2 . 1通配符例子 4. 2 . 2 使用通配符的常见错误 4. 2 . 3函数w i l d c a r d 4. 3在目录中搜寻依赖 4. 3. 1VPA T H : 所有依赖的搜寻路径 4. 3. 2 v p a t h 指令 4. 3. 3目录搜寻过程 4. 3. 4编写搜寻目录的s h e l l 命令 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中断或关闭m a k e 5. 6 递归调用m a k e 5. 6 . 1变量M A K E的工作方式 5. 6 . 2 与子m a k e 通讯的变量 5. 6 . 3与子m a k e 通讯的选项 5. 6 . 4 -p r i n t -d i r e c t o r y 选项 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 o v e r r i d e 指令 6 . 8 定义多行变量 6 . 9环境变量 6 . 10 特定目标变量的值 6 . 11特定格式变量的值 7 M a k e f i l e 文件的条件语句 h t t p : / / l s e c . c c . a c . c n / p e a c e / a r t i c l e s / g n u m a k e t r a n s l a t e d . h t m l (第 2 7 9 页)2 0 0 6 -8 -18 18 : 49: 0 1G NU M a k e 使用手册(中译版)7 . 1条件语句的例子 7 . 2 条件语句的语法 7 . 3测试标志的条件语句 8 文本转换函数 8 . 1函数调用语法 8 . 2 字符串替换和分析函数 8 . 3文件名函数 8 . 4函数f o r e a c h 8 . 5函数i f 8 . 6 函数c a l l 8 . 7 函数o r i g i n 8 . 8 函数s h e l l 8 . 9控制M a k e 的函数 9 运行m a k e 9. 1指定M a k e f i l e 文件的参数 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 使用m a k e 更新档案文件 11. 1档案成员目标 11. 2 档案成员目标的隐含规则 11. 2 . 1更新档案成员的符号索引表 11. 3使用档案的危险 11. 4档案文件的后缀规则 12 G NU m a k e 的特点 13 不兼容性和失去的特点 14 M a k e f i l e 文件惯例 14. 1m a k e f i l e 文件的通用惯例 14. 2 m a k e f i l e 文件的工具 14. 3指定命令的变量 14. 4安装路径变量 14. 5用户标准目标 h t t p : / / l s e c . c c . a c . c n / p e a c e / a r t i c l e s / g n u m a k e t r a n s l a t e d . h t m l (第 37 9 页)2 0 0 6 -8 -18 18 : 49: 0 1G NU M a k e 使用手册(中译版)14. 6 安装命令分类 15快速参考 16 m a k e 产生的错误 17 复杂的M a k e f i l e 文件例子 附录 名词翻译对照表1 M a k e 概述M a k e 可自动决定一个大程序中哪些文件需要重新编译,并发布重新编译它们的命令。本版本G NU M a k e 使用手册由Ri c h a r d M . St a l l m a n a n d Ro l a n d M c G r a t h 编著,是从Pa u l D . Sm i t h 撰写的V3. 7 6 版本发展过来的。 G NU M a k e 符合I EEE St a n d a r d 10 0 3. 2 -1992 ( PO SIX. 2 ) 6 . 2 章节的规定。 因为C语言程序更具有代表性,所以我们的例子基于C语言程序,但M a k e 并不是仅仅能够处理C语言程序,它可以处理那些编 译器能够在Sh e l l 命令下运行的的各种语言的程序。事实上,G NU M a k e 不仅仅限于程序,它可以适用于任何如果一些文件变化 导致另外一些文件必须更新的任务。 如果要使用M a k e ,必须先写一个称为M a k e f i l e 的文件,该文件描述程序中各个文件之间的相互关系,并且提供每一个文件的更 新命令。在一个程序中,可执行程序文件的更新依靠O BJ文件,而O BJ文件是由源文件编译得来的。 一旦合适的M a k e f i l e 文件存在,每次更改一些源文件,在s h e l l 命令下简单的键入: m a k e 就能执行所有的必要的重新编译任务。M a k e 程序根据M a k e f i l e 文件中的数据和每个文件更改的时间戳决定哪些文件需要更新。 对于这些需要更新的文件,M a k e 基于M a k e f i l e 文件发布命令进行更新,进行更新的方式由提供的命令行参数控制。具体操作请 看运行M a k e章节。1. 1怎样阅读本手册如果您现在对M a k e 一无所知或者您仅需要了解对m a k e 的普通性介绍,请查阅前几章内容,略过后面的章节。前几章节是普通 介绍性内容,后面的章节是具体的专业、技术内容。 如果您对其它M a k e 程序十分熟悉,请参阅G NU M a k e 的特点和不兼容性和失去的特点部分,G NU M a k e 的特点这一章列出了 G NU M a k e 对m a k e 程序的扩展,不兼容和失去的特点一章解释了其它M a k e 程序有的特征而G NU M a k e 缺乏的原因。 对于快速浏览者,请参阅选项概要、快速参考和内建的特殊目标名部分。1. 2 问题和BU G如果您有关于G NU M a k e 的问题或者您认为您发现了一个BU G ,请向开发者报告;我们不能许诺我们能干什么,但我们会尽力 修正它。在报告BU G 之前,请确定您是否真正发现了BU G ,仔细研究文档后确认它是否真的按您的指令运行。如果文档不能 清楚的告诉您怎么做,也要报告它,这是文档的一个BU G 。 在您报告或者自己亲自修正BU G 之前,请把它分离出来,即在使问题暴露的前提下尽可能的缩小M a k e f i l e 文件。然后把这个 M a k e f i l e 文件和M a k e 给出的精确结果发给我们。同时请说明您希望得到什么,这可以帮助我们确定问题是否出在文档上。 一旦您找到一个精确的问题,请给我们发E-m a i l ,我们的E-m a i l 地址是: b u g -m a k e g n u . o r g 在邮件中请包含您使用的G NU M a k e 的版本号。您可以利用命令m a k e -v e r s i o n 得到版本号。同时希望您提供您的机器型号 和操作系统类型,如有可能的话,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号