9、include 文件包含
关注公众号 “融码一生”,领取全套 PDF / 电子书
- Makefile 中包含其他文件使用的关键字是
include
,和 C 语言包含头文件的方式相同。 - 当 make 读取到
include
关键字时,会暂停读取当前的 Makefile,而去读include
包含的文件,读取结束后再继读取当前的 Makefile 文件。include
使用的具体方式如下:
-
include <filenames>
-
-
filenames
:shell 支持的文件名(可以使用通配符表示的文件)
-
- 注意:
include
关键字所在的行首可以包含一个或多个空格(读取时空格会被自动忽略),但不能使用 Tab 开始,否则会把include
当作命令来处理。包含的多个文件之间要用空格分隔。使用include
包含进来的文件中,如果存在函数或变量的引用,它们会在 Makefile 中展开。 - include 通常在以下场合使用:
-
- 在一个工程文件中,每一个模块都有一个独立的 Makefile 来描述它的重建规则。它们需要定义一组通用的变量定义或模式规则。通用的做法是将这些共同使用的变量或模式规则定义在一个文件中,需要时用
include
包含这个文件。 - 当根据源文件自动产生依赖文件时,可以将自动产生的依赖关系保存在另一个文件中。然后在 Makefile 中包含这个文件。
- 在一个工程文件中,每一个模块都有一个独立的 Makefile 来描述它的重建规则。它们需要定义一组通用的变量定义或模式规则。通用的做法是将这些共同使用的变量或模式规则定义在一个文件中,需要时用
- 注意:如果使用
include
包含文件时,指定的文件不是文件的绝对路径或没有这个文件,make 会根据文件名在以下几个路径中去找,首先在执行 make 命令时可以加入选项-I
或--include-dir
,后面添加上指定的路径,如果文件存在就会被使用,如果文件不存在将会在几个路径中搜索:
-
usr/gnu/include
usr/local/include
usr/include
- 如果在上面的路径没有找到
include
指定的文件,make 将会提示一个文件没有找到的警示提示,随后继续执行 Makefile 的后续内容。当完成读取整个 Makefile 后,make 将试图使用规则来创建通过include
指定但不存在的文件。当不能创建时,文件将会保存退出。 - 使用时,通常用
-include
代替include
来忽略文件不存在或无法创建的错误提示,使用格式如下(使用方法和include
的使用方法相同):
-
-include <filename>
- 这两种方式之间的区别:
-
- 使用
include <filenames>
,make 在处理程序时,文件列表中的任意一个文件不存在时或没有规则去创建这个文件时,make 程序将会提示错误并保存退出。 - 使用
-include <filenames>
,当包含的文件不存在或没有规则去创建它时,make 将会继续执行程序,只有真正由于不能完成终极目标重建时程序才会提示错误、保存退出。
- 使用
关注公众号 “融码一生”,领取全套 PDF / 电子书