makefile include的作用
2015-08-26 20:17
260 查看
转载▼
标签:
分类:
嵌入式linux
本节我们讨论如何在一个 Makefile 中包含其它的 makefile 文件。Makefile 中包含其它文件
的关键字是“include”,和 C 语言对头文件的包含方式一致。
“include”指示符告诉 make 暂停读取当前的 Makefile,而转去读取“include”指定的一
个或者多个文件,完成以后再继续当前 Makefile 的读取。Makefile 中指示符“include”书写在
独立的一行,其形式如下:
include FILENAMES...
FILENAMES 是 shell 所支持的文件名(可以使用通配符)。
指示符“include”所在的行可以一个或者多个空格(make程序在处理时将忽略这些空格)开
始,切忌不能以 [Tab] 字符开始(如果一行以 [Tab] 字符开始 make 程序将此行作为一个命令行来处
理)。指示符“include”和文件名之间、多个文件之间使用空格或者 [Tab] 键隔开。行尾的空白字
符在处理时被忽略。使用指示符包含进来的 Makefile 中,如果存在变量或者函数的引用。它们将会
在包含它们的 Makefile 中被展开(详细可参考第五章 Makefile 中的变量)。
来看一个例子,存在三个.mk 文件,“$(bar)”被扩展为“bish bash”。则
include foo *.mk $(bar)
等价于
include foo a.mk b.mk c.mk bish bash
make 程序在处理指示符 include 时,将暂停对当前使用指示符“include”的 makefile 文件
的读取,而转去依此读取由“include”指示符指定的文件列表。直到完成所有这些文件以后再回
过头继续读取指示符“include”所在的 makefile 文件。
通常指示符“include”用在以下场合:
1. 有多个不同的程序,由不同目录下的几个独立的Makefile来描述其创建或者更新规则。它
们需要使用一组通用的变量定义(可参考 5.5 如何设置变量 一节)或者模式规则(可参
考 9.5 模式规则一节) 。通用的做法是将这些共同使用的变量或者模式规则定义在一个文
件中(没有具体的文件命名限制) ,在需要使用的Makefile中使用指示符“include”来包
含此文件。
2. 当根据源文件自动产生依赖文件时;我们可以将自动产生的依赖关系保存在另外一个文件
中,主Makefile使用指示符“include”包含这些文件。这样的做法比直接在主Makefile
中追加依赖文件的方法要明智的多。其它版本的make已经使用这种方式来处理。 (参考
3.14 自动产生依赖 一节)
如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...) ,
而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使
(参考 8.7make的命令行选项 一节)指定的目录,如
用命令行选项“-I”或者“--include-dir”
果找到指定的文件,则使用这个文件;否则依此搜索以下几个目录(如果其存在) :
“/usr/gnu/include”“/usr/local/include”和“/usr/include”
、 。
当在这些目录下都没有找到“include”指定的文件时,make将会提示一个包含文件未找到的
告警提示, 但是不会立刻退出。 而是继续处理Makefile的内容。 当完成读取所有的makefile文件后,
make将试图使用规则来创建通过指示符“include”指定的但未找到的文件(参考 2.7 makefile
文件的重建一节)
Makefile include
(2011-05-26 16:46:23)转载▼
标签:
杂谈
http://blog.sina.com.cn/s/blog_6cc850810100r8fr.html分类:
嵌入式linux
本节我们讨论如何在一个 Makefile 中包含其它的 makefile 文件。Makefile 中包含其它文件
的关键字是“include”,和 C 语言对头文件的包含方式一致。
“include”指示符告诉 make 暂停读取当前的 Makefile,而转去读取“include”指定的一
个或者多个文件,完成以后再继续当前 Makefile 的读取。Makefile 中指示符“include”书写在
独立的一行,其形式如下:
include FILENAMES...
FILENAMES 是 shell 所支持的文件名(可以使用通配符)。
指示符“include”所在的行可以一个或者多个空格(make程序在处理时将忽略这些空格)开
始,切忌不能以 [Tab] 字符开始(如果一行以 [Tab] 字符开始 make 程序将此行作为一个命令行来处
理)。指示符“include”和文件名之间、多个文件之间使用空格或者 [Tab] 键隔开。行尾的空白字
符在处理时被忽略。使用指示符包含进来的 Makefile 中,如果存在变量或者函数的引用。它们将会
在包含它们的 Makefile 中被展开(详细可参考第五章 Makefile 中的变量)。
来看一个例子,存在三个.mk 文件,“$(bar)”被扩展为“bish bash”。则
include foo *.mk $(bar)
等价于
include foo a.mk b.mk c.mk bish bash
make 程序在处理指示符 include 时,将暂停对当前使用指示符“include”的 makefile 文件
的读取,而转去依此读取由“include”指示符指定的文件列表。直到完成所有这些文件以后再回
过头继续读取指示符“include”所在的 makefile 文件。
通常指示符“include”用在以下场合:
1. 有多个不同的程序,由不同目录下的几个独立的Makefile来描述其创建或者更新规则。它
们需要使用一组通用的变量定义(可参考 5.5 如何设置变量 一节)或者模式规则(可参
考 9.5 模式规则一节) 。通用的做法是将这些共同使用的变量或者模式规则定义在一个文
件中(没有具体的文件命名限制) ,在需要使用的Makefile中使用指示符“include”来包
含此文件。
2. 当根据源文件自动产生依赖文件时;我们可以将自动产生的依赖关系保存在另外一个文件
中,主Makefile使用指示符“include”包含这些文件。这样的做法比直接在主Makefile
中追加依赖文件的方法要明智的多。其它版本的make已经使用这种方式来处理。 (参考
3.14 自动产生依赖 一节)
如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...) ,
而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使
(参考 8.7make的命令行选项 一节)指定的目录,如
用命令行选项“-I”或者“--include-dir”
果找到指定的文件,则使用这个文件;否则依此搜索以下几个目录(如果其存在) :
“/usr/gnu/include”“/usr/local/include”和“/usr/include”
、 。
当在这些目录下都没有找到“include”指定的文件时,make将会提示一个包含文件未找到的
告警提示, 但是不会立刻退出。 而是继续处理Makefile的内容。 当完成读取所有的makefile文件后,
make将试图使用规则来创建通过指示符“include”指定的但未找到的文件(参考 2.7 makefile
文件的重建一节)
相关文章推荐
- C/C++编程题之整数转IP地址
- 第49讲:Scala中Variance代码实战及其在Spark中的应用源码解析学习笔记
- HDU2473 - Junk-Mail Filter 利用虚拟数组实现删除并查集的节点
- 【图论】【A*搜索】[POJ2449]Remmarguts' Date
- 电子商务的本质是低成本高效率
- C++内联函数总结
- codeforces 121C C. Lucky Permutation(数论+构造)
- LeetCode题解:Happy Number
- 浅谈 OneAPM 在 express 项目中的实践
- UI空间大全
- HTML 5 <input> placeholder 属性
- HTML 5 <input> placeholder 属性
- HTML 5 <input> placeholder 属性
- 浅谈 OneAPM 在 express 项目中的实践
- angularjs+requirejs整合
- 6+重建二叉树
- 霍夫变换
- 【图论】[二分图匹配] 模板
- 【图论】[ZOJ1054]Place the Robots
- C语言(6)--国际象棋棋盘、螺旋矩阵、指定年份日历、打印ASCII码表