gnumake中文手册_完整内容摘要:
对一个目标文件是 ―‖,倚赖文件是 ―‖的规则,完全可以省略其规则的命令行,而由 make自身决定使用默认命令。 此默认规则称为 make的隐含规则(关于隐含规则可参考 第十章 使用隐含规则 ) 这样,在书写 Makefile时,我们就可以省略掉描述 .c文件和 .o依赖关系的规则,而只需要给出那些特定的规则描述( .o目标所需要的 .h文件)。 因此上边的例子就可以以更加简单的方式书写,我们同样使用变量―objects‖。 Makefile内容如下: sample Makefile objects = \ edit : $(objects) cc o edit $(objects) : : : : : : : : .PHONY : clean clean : rm edit $(objects) 这种格式的 Makefile更接近于我们实际应用。 (关于目标 ―clean‖的详细说明我们在后边。 参考 Makefile伪目标 一节 和 命令的错误 一节) make的隐含规则在实际工程的 make中会经常使用,它使得编译过程变得方便。 几乎在所有的 Makefile中都用到了 make的隐含规则, make的隐含规则是非常重要的一个概念。 后续我们会在第十章会有专门的讨论。 另类风格的 makefile 上一节中我们提到过, Makefile中,所有的 .o目标文件都可以使用隐含规则由 make 2020年 9月 11日 17GNU make中文手册 自动重建,我们可以根据这一点书写更加简洁的 Makefile。 而且在这个 Makefile中,我们是根据依赖而不是目标对规则进行分组。 形成另外一种风格的 Makefile。 实现如下: sample Makefile objects = \ edit : $(objects) cc o edit $(objects) $(objects) : : : 本例中,我们以三个头文件为出发点,对依赖于每一个头文件的目标进行合并。 书写出一个多目标规则,规则中多个目标同时依赖于对应的头文件,而且同一个文件可能同时存在多个规则中。 例子中头文件―‖作为所有 .o文件的依赖文件。 其它两个头文件作为规则所有目标文件(多个 .o文件)的依赖文件。 这 种风格的 Makefile并不值得我们借鉴。 问题在于:同时把多个目标文件的依赖放在同一个规则中进行描述(一个规则中含有多个目标文件),这样导致规则定义不明了,比较混乱。 建议大家不要在 Makefile中采用这种方式了书写。 否则后期维护将会是一件非常痛苦的事情。 书写规则建议的方式是:单目标,多依赖。 就是说尽量要做到一个规则中只存在一个目标文件,可有多个依赖文件。 尽量避免使用多目标,单依赖的方式。 这样书写的好处是后期维护会非常方便,而且这样做会使 Makefile会更清晰、明了。 清除工作目录过程文件 规则除了完成源代码编译之外,也可以完成其它任务。 例如:前边提到的为了实现清除当前目录中编译过程中产生的临时文件( edit和哪些 .o文件)的规则: clean : rm edit $(objects) 在实际应用时,我们把这个规则写成如下稍微复杂一些的样子。 以防止出现始料未及的情况。 2020年 9月 11日 18GNU make中文手册 .PHONY : clean clean : rm edit $(objects) 这两个实现有两点不同: 1. 通过 ―.PHONY‖特殊目标将 ―clean‖目标声明为伪目标。 避免当磁盘上存在一个名为 ―clean‖文件时,目标 ―clean‖所在规则的命令无法执行(参考 Makefile伪目标 一节)。 2. 在命令行之前使用 ―‖,意思是忽略命令 ―rm‖的执行错误(参考 命令的错误 一节)。 这样的一个目标在 Makefile中,不能将其作为终极目标( Makefile的第一个目标)。 因为我们的初衷并不是当你在命令行上输入 make以后执行删除动作。 而是要创建或者更新程序。 在我们上边的例子中。 就是在输入 make以后要需要对目标 ―edit‖进行创 建或者重建。 上例中因为目标 ―clean‖没有出现在终极目标 ―edit‖依赖关系中(终极目标的直接依赖或者间接依赖),所以我们执行 ―make‖时,目标 ―clean‖所在的规则将不会被处理。 当需要执行此规则,要在 make的命令行选项中明确指定这个目标(执行 ―make clean‖)。 关于 make的执行可参考 指定终极目标 一节。 2020年 9月 11日 19GNU make中文手册 第三章: Makefile 总述 Makefile总述 Makefile的内容 在一个完整的 Makefile中,包含了 5个东西:显式规则、隐含规则、变量定义、指示符和注释。 关于 ―规则 ‖、 ―变量 ‖和 ―Makefile指示符 ‖将在后续的章节进行详细的讨论。 本章讨论的是一些基本概念。 显式规则:它描述了在何种情况下如何更新一个或者多个被称为目标的文件( Makefile的目标文件)。 书写 Makefile时需要明确地给出目标文件、目标的依赖文件列表以及更新目标文件所需要的命令(有些规则没有命令,这样的规则只是纯粹的描述了文件之间的依赖关系)。 隐含规则:它是 make根据一类目标文件(典型的是根据文件名的后缀)而自动推导出来的规则。 make根据目标文件的名,自动产生目标的依赖文件并使用默认的命令来对目标进行更新(建立一个规则)。 关于隐含规则可参考 第十章 make的隐含规则 变量定义:使用一个字符或字符串代表一段文本串,当定义了一个变量以后, Makefile后续在需要使用此文本串的地方,通过引用这个变量来实现对文本串的使用。 第一章的例子中,我们就定义了一个变量 ―objects‖来表示一个 .o文件列表。 关于变量的详细讨论可参考 第六章 Makefile中的变量 Makefile指示符:指示 符指明在 make程序读取 makefile文件过程中所要执行的一个动作。 其中包括: 读取一个文件,读取给定文件名的文件,将其内容作为makefile文件的一部分。 参考 包含其它 makefile文件 一节 决定(通常是根据一个变量的得值)处理或者忽略 Makefile中的某一特定部分。 参考 第七章 Makefile的条件执行 定义一个多行变量。 参考 多行定义 一节 注释: Makefile中 ―‖字符后的内容被作为是注释内容(和 shell脚本一样)处理。 如果此行的第一个非 空字符为 ―‖,那么此行为注释行。 注释行的结 2020年 9月 11日 20GNU make中文手册 尾如果存在反斜线( \),那么下一行也被作为注释行。 一般在书写 Makefile时推荐将注释作为一个独立的行,而不要和 Makefile的有效行放在一行中书写。 当在 Makefile中需要使用字符 ―‖时,可以使用反斜线加 ―‖( \)来实现(对特殊字符 ―‖的转义),其表示将 ―‖作为一字符而不是注释的开始标志。 需要注意的地方: Makefile中第一个规则之后的所有以 [Tab]字符开始的的行, make程序都会将其交给系统 shell程序去解释执行。 因此,以 [Tab]字符开始的注释行也会被交给 shell来处理,此命令行是否需要被执行( shell执行或者忽略)是由系统 shell程序来判决的。 另外,在使用指示符 ―define‖定义一个多行的变量或者命令包时,其定义体( ―define‖和 ―endef‖之间的内容)会被完整的展开到 Makefile中引用此变量的地方(包含定义体中的注释行); make在引用此变量的地方对所有的定义体进行处理,决定是注释还是有效内容。 Makefile中变量的引用和 C语言中的宏类似(但 是其实质并不相同,后续将会详细讨论)。 对一个变量引用的地方 make所做的就是将这个变量根据定义进行基于文本的展开,展开变量的过程不涉及到任何变量的具体含义和功能分析。 makefile文件的命名 默认的情况下, make会在工作目录(执行 make的目录)下按照文件名顺序寻找 makefile文件读取并执行,查找的文件名顺序为:―GNUmakefile‖、 ―makefile‖、 ―Makefile‖。 通常应该使用 ―makefile‖或者 ―Makefile‖作为一个 makefile的文件名(我们推荐使 用 ―Makefile‖,首字母大写而比较显著,一般在一个目录中和当前目录的一些重要文件( README,Chagelist等)靠近,在寻找时会比较容易的发现它)。 而 ―GNUmakefile‖是我们不推荐使用的文件名,因为以此命名的文件只有 ―GNU make‖才可以识别,而其他版本的make程序只会在工作目录下 ―makefile‖和 ―Makefile‖这两个文件。 如果 make程序在工作目录下无法找到以上三个文件中的任何一个,它将不读取任何其他文件作为解析对象。 但是根据 make隐含规则的特性,我们可以通过命令 行指定一个目标,如果当前目录下存在符合此目标的依赖文件,那么这个命令行所指定的目标 2020年 9月 11日 21GNU make中文手册 将会被创建或者更新,参见注释。 (详细可参考 第十章 make的隐含规则 ) 当 makefile文件的命名不是这三个任何一个时,需要通过 make的 ―f‖或者 ―file‖选项来指定 make读取的 makefile文件。 给 make指定 makefile文件的格式为: ―f NAME‖或者 ―—file=NAME‖,它指定文件 ―NAME‖作为执行 make时读取的 makefile文件。 也可以通过多个 ―f‖或者 ―file‖选项来指定多个需要读取的 makefile文件,多个 makefile文件将会被按照指定的顺序进行链接并被 make解析执行。 当通过 ―f‖或者 ―file‖指定 make读取 makefile的文件时, make就不再自动查找这三个标准命名的makefile文件。 注释:通过命令指定目标使用 make的隐含规则: 当前目录下不存在以 ―GNUmakefile‖、 ―makefile‖、 ―Makefile‖命名的任何文件, 1. 当前目录下存在一个源文件 ,我们可以使用 ―make ‖来使用 make的隐含规则自动生成。 当执行 ―make ‖时。 我们可以看到其执行的命令为: cc –c –o 之后,。 2. 如果当前目录下没有 ,就是 make对 .o文件目标的隐含规则中依赖文件不存在。 如果使用命令 ―make ‖时,将回到到如下提示: make: *** No rule to make target ‘’. Stop. 3. 如果直接使用命 令 ―make‖时,得到的提示信息如下: make: *** No targets specified and no makefile found. Stop. 包含其它 makefile文件 本节我们讨论如何在一个 Makefile中包含其它的 makefile文件。 Makefile中包含其它文件所需要使用的关键字是 ―include‖,和 c语言对头文件的包含方式一致。 ―include‖指示符告诉 make暂停读取当前的 Makefile,而转去读取―include‖指定的一个或者多个文件,完成以后 再继续当前 Makefile的读取。 Makefile中指示符 ―include‖书写在独立的一行,其形式如下: include FILENAMES... FILENAMES是 shell所支持的文件名(可以使用通配符)。 指示符 ―include‖所在的行可以一个或者多个空格( make程序在处理时将忽略这 2020年 9月 11日 22GNU make中文手册 些空格)开始,切忌不能以 [Tab]字符开始(如果一行以 [Tab]字符开始 make程序将此行作为一个命令行来处理)。 指示符 ―include‖和文件 名之间、多个文件之间使用空格或者 [Tab]键隔开。 行尾的空白字符在处理时被忽略。 使用指示符包含进来的 Makefile中,如果存在变量或者函数的引用。 它们将会在包含它们的 Makefile中被展开(详细可参考 第六章 Makefile中的变量 )。 来看一个例子,存在三个 .mk文件 、 、 , ―$(bar)‖被扩展为 ―bish bash‖。 则 include foo *.mk $(bar) 等价于 include foo bish bash 之前已经提到过 make程序在处理指示符 include时,将暂停对当前使用指示符 ―in。gnumake中文手册_完整
相关推荐
制作:名词介绍 8第一要素:阉役虏扩撅盟邹坝朴洼抖陨茹川柞萨寿筐冯蹬恫绸仲悄事菌锡雄派扮忱辞刚掀急介懒慢掸谩存淋青夺翔奸夏硷翅势写餐百徘捻锰症闪酝延开钦抑注 第一节:背景模版 37E版 多媒体信息发布系统 V3. .0操作手册 50 目录第一章:系统概要 1第二章:系统结构 1第一节:网络拓扑图 1第二节:功能模 块 2第三章:系统操作 3第一模块:节目管理 3第一节:创建节目 3第二节
供先进的安全检测, 越来越多的信息安全 公司开发出了新一代安全平台。 IDC 将这类新的安全平台命名为统一威胁管理( UTM)设备,它集成了多种安全功能,以提高安全系统的效能。 通过将状态检测防火墙、 VPN、网关防病毒和 IPS 功能集成到一个安全设备里, UTM 提高了检测率,并提供了比单一功能安全设备更好的阻挡能力。 UTM 安全系统的其它优点包括:
作人员的基本电气安全要求。 本标准适用于具有 6 kV及以上电压等级设施的发电企业所有运用中的电气设备及其相关场所;具有 35 kV及以上电压等级设施的输电、变电和配莆拜奢墟何其歇谩然吭润阅暖石渣咋莆诅散恬婪铆祥姨腥蜡呻骡妻次综泻 菩独瘁矩朴蹬侩氰徊较脐篱盎过佣溢来呛扔浆差谦施奸裁缝伎涕撑硷屡死 作业人员应被告知其作业现场存在的危险因素和防范措施。
作为普通钢筋使用 ,且 “抗震钢筋”的应用时 有相关 强制要求。 单列抗震钢筋 牌号 ,在应用过程中便于区分抗震钢筋和普通钢筋,有利于抗震钢筋产品的推广应用。 3 技术要求 钢筋的化学成分 在现有合金体系下开展 HRB600 钢筋的试制,并对其力学性能进行试验。 试验结果表明,现有合金体系下可制备出符合本标 准提出的力学指标的 HRB600 钢筋。 比较国内外钢筋标准,有 500MPa
整个流称为工作域流。 BIFF 记录结构 定义: BIFF 记录 很多 Excel 的流 或 子组被分开 记录。 每个记录包含文件各种内容和特点的特定数据。 它包括一个指定记录类型和规模的标题,其次是数据记录。 BIFF 结构的一般结构 表 24 数据记录的最大规模是有限的, 这 取决于 BIFF 版本。 如果记录数据的大小超过当前限制,将增加一个或多个连续记录。 在连续记录当中,此前 的纪录