GNUMake使用手册

上传人:M****1 文档编号:543647582 上传时间:2022-10-04 格式:DOC 页数:99 大小:470.02KB
返回 下载 相关 举报
GNUMake使用手册_第1页
第1页 / 共99页
GNUMake使用手册_第2页
第2页 / 共99页
GNUMake使用手册_第3页
第3页 / 共99页
GNUMake使用手册_第4页
第4页 / 共99页
GNUMake使用手册_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《GNUMake使用手册》由会员分享,可在线阅读,更多相关《GNUMake使用手册(99页珍藏版)》请在金锄头文库上搜索。

1、GNU Make 使用手册(中译版)翻译:于凤昌译者注:本人在阅读Linux源代码过程中发现如果要全面了解Linux的结构、理解Linux的编程总体设计及思想必须首先全部读通Linux源代码中各级的Makefile文件。目前,在网上虽然有一些著作,但都不能全面的解释Linux源代码中各级的Makefile文件,因此本人认真阅读了GNU Make 使用手册(3.79)版原文,在此基础上翻译了该手册,以满足对Linux源代码有兴趣或者希望采用GCC编写程序但对缺乏GNU Make全面了解之人士的需要。本人是业余爱好不是专业翻译人士,如果有问题请通过电子信箱与我联系共同商讨,本人的E-mail为:

2、。注意在文章中出现的斜体加粗字表示章节。GNU make Version 3.79April 2000Richard M. Stallman and Roland McGrath目录1 Make 概述51.1怎样阅读本手册51.2问题和BUG52 Makefile文件介绍62.1 规则的格式62.2一个简单的Makefile文件62.3 make处理makefile文件的过程72.4使用变量简化makefile文件82.5 让make推断命令92.6 另一种风格的makefile文件92.7 在目录中删除文件的规则103 编写makefile文件103.1 makefile文件的内容103.2

3、 makfile文件的命名113.3 包含其它的makefile文件113.4 变量MAKEFILES123.5 makefile文件重新生成的过程123.6 重载其它makefile文件133.7 make读取makefile文件的过程144编写规则144.1规则的语法154.2 在文件名中使用通配符154.3在目录中搜寻依赖174.4假想目标204.5 没有命令或依赖的规则214.6使用空目标文件记录事件224.7 内建的特殊目标名224.8 具有多个目标的规则234.9 具有多条规则的目标244.10 静态格式规则244.11双冒号规则264.12 自动生成依赖265在规则中使用命令27

4、5.1 命令回显275.2执行命令285.3 并行执行295.4命令错误295.5中断或关闭make305.6递归调用make305.7定义固定次序命令345.8 使用空命令356 使用变量356.1 变量引用基础356.2 变量的两个特色366.3变量引用高级技术376.4变量取值406.5设置变量406.6 为变量值追加文本416.7 override指令426.8定义多行变量426.9 环境变量436.10 特定目标变量的值436.11 特定格式变量的值447 makefile文件的条件语句447.1条件语句的例子447.2条件语句的语法457.3测试标志的条件语句478 文本转换函数4

5、78.1函数调用语法478.2字符串替换和分析函数488.3文件名函数508.4函数foreach518.5函数if528.6函数call528.7函数origin538.8 函数shell548.9 控制make的函数549 运行make559.1 指定makefile文件的参数559.2指定最终目标的参数559.3 代替执行命令579.4避免重新编译文件579.5变量重载589.6 测试编译程序589.7 选项概要5910 使用隐含规则6110.1 使用隐含规则6210.2隐含规则目录6210.3隐含规则使用的变量6510.4 隐含规则链6610.5定义与重新定义格式规则6710.6 定义

6、最新类型的缺省规则7110.7 过时的后缀规则7210.8隐含规则搜寻算法7311使用make更新档案文件7411.1档案成员目标7411.2 档案成员目标的隐含规则7411.3 使用档案的危险7511.4 档案文件的后缀规则7612 GNU make的特点7613 不兼容性和失去的特点7814 makefile文件惯例7914.1 makefile文件的通用惯例7914.2 makefile文件的工具8014.3 指定命令的变量8014.4安装路径变量8114.5用户标准目标8414.6 安装命令分类8715 快速参考8916 make产生的错误9217 复杂的makfile文件例子94脚注

7、98名词翻译对照表981 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不仅仅

8、限于程序,它可以适用于任何如果一些文件变化导致另外一些文件必须更新的任务。如果要使用Make,必须先写一个称为Makefile的文件,该文件描述程序中各个文件之间的相互关系,并且提供每一个文件的更新命令。在一个程序中,可执行程序文件的更新依靠OBJ文件,而OBJ文件是由源文件编译得来的。一旦合适的Makefile文件存在,每次更改一些源文件,在shell命令下简单的键入:make就能执行所有的必要的重新编译任务。Make程序根据Makefile文件中的数据和每个文件更改的时间戳决定哪些文件需要更新。对于这些需要更新的文件,Make基于Makefile文件发布命令进行更新,进行更新的方式由提供的

9、命令行参数控制。具体操作请看运行Make章节。1.1怎样阅读本手册如果您现在对Make一无所知或者您仅需要了解对make 的普通性介绍,请查阅前几章内容,略过后面的章节。前几章节是普通介绍性内容,后面的章节是具体的专业、技术内容。如果您对其它Make程序十分熟悉,请参阅GNU Make的特点和不兼容性和失去的特点部分,GNU Make的特点这一章列出了GNU Make对make程序的扩展,不兼容和失去的特点一章解释了其它Make程序有的特征而GNU Make缺乏的原因。对于快速浏览者,请参阅选项概要、快速参考和内建的特殊目标名部分。1.2问题和BUG如果您有关于GNU Make的问题或者您认为

10、您发现了一个BUG,请向开发者报告;我们不能许诺我们能干什么,但我们会尽力修正它。在报告BUG之前,请确定您是否真正发现了BUG,仔细研究文档后确认它是否真的按您的指令运行。如果文档不能清楚的告诉您怎么做,也要报告它,这是文档的一个BUG。在您报告或者自己亲自修正BUG之前,请把它分离出来,即在使问题暴露的前提下尽可能的缩小Makefile文件。然后把这个Makefile文件和Make给出的精确结果发给我们。同时请说明您希望得到什么,这可以帮助我们确定问题是否出在文档上。一旦您找到一个精确的问题,请给我们发E-mail,我们的E-mail地址是:bug-makegnu.org在邮件中请包含您使

11、用的GNU Make的版本号。您可以利用命令make-version得到版本号。同时希望您提供您的机器型号和操作系统类型,如有可能的话,希望同时提供config.h文件(该文件有配置过程产生)。2 Makefile文件介绍Make程序需要一个所谓的Makefile文件来告诉它干什么。在大多数情况下,Makefile文件告诉Make怎样编译和连接成一个程序。本章我们将讨论一个简单的Makefile文件,该文件描述怎样将8个C源程序文件和3个头文件编译和连接成为一个文本编辑器。Makefile文件可以同时告诉Make怎样运行所需要的杂乱无章的命令(例如,清除操作时删除特定的文件)。如果要看更详细、

12、复杂的Makefile文件例子,请参阅复杂的Makefile文件例子一章。当Make重新编译这个编辑器时,所有改动的C语言源文件必须重新编译。如果一个头文件改变,每一个包含该头文件的C语言源文件必须重新编译,这样才能保证生成的编辑器是所有源文件更新后的编辑器。每一个C语言源文件编译后产生一个对应的OBJ文件,如果一个源文件重新编译,所有的OBJ文件无论是刚刚编译得到的或原来编译得到的必须从新连接,形成一个新的可执行文件。2.1 规则的格式一个简单的Makefile文件包含一系列的“规则”,其样式如下:目标(target): 依赖(prerequiries)命令(command)目标(targe

13、t)通常是要产生的文件的名称,目标的例子是可执行文件或OBJ文件。目标也可是一个执行的动作名称,诸如clean(详细内容请参阅假想目标一节)。依赖是用来输入从而产生目标的文件,一个目标经常有几个依赖。命令是Make执行的动作,一个规则可以含有几个命令,每个命令占一行。注意:每个命令行前面必须是一个Tab字符,即命令行第一个字符是Tab。这是不小心容易出错的地方。通常,如果一个依赖发生变化,则需要规则调用命令对相应依赖和服务进行处理从而更新或创建目标。但是,指定命令更新目标的规则并不都需要依赖,例如,包含和目标clern相联系的删除命令的规则就没有依赖。规则一般是用于解释怎样和何时重建特定文件的

14、,这些特定文件是这个详尽规则的目标。Make需首先调用命令对依赖进行处理,进而才能创建或更新目标。当然,一个规则也可以是用于解释怎样和何时执行一个动作,详见编写规则一章。一个Makefile文件可以包含规则以外的其它文本,但一个简单的Makefile文件仅仅需要包含规则。虽然真正的规则比这里展示的例子复杂,但格式却是完全一样。2.2一个简单的Makefile文件一个简单的Makefile文件,该文件描述了一个称为文本编辑器(edit)的可执行文件生成方法,该文件依靠8个OBJ文件(.o文件),它们又依靠8个C源程序文件和3个头文件。在这个例子中,所有的C语言源文件都包含defs.h 头文件,但仅仅定义编辑命令的源文件包含command.h头文件,仅仅改变编辑器缓冲区的低层文件包含buffer.h头文件。edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.omain.o : main.c defs.h cc -c main.ckbd.o : kbd.c defs.h command.h

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板/表格 > 财务表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号