include相关¶
include 用法:
include <filename>
示例:
include scripts/make-rules/common.mk
include scripts/make-rules/golang.mk
按下面的顺序查找 makefile 文件:
1. 如果是绝对或相对路径
就直接根据路径 include 进来
2. 如果 make 执行时,有 -I 或 --include-dir 参数
那么 make 就会在这个参数所指定的目录下去找
3. 如果目录 <prefix>/include存在的话
依此搜索以下几个目录:
/usr/gnu/include
/usr/local/include
/usr/include
当在这些目录下都没有找到“include”指定的文件,且后续没有规则创建,会输出类似如下错误提示:
Makefile:错误的行数:未找到文件名:提示信息(No such file or directory)
Make: *** No rule to make target ‘<filename>’. Stop
可使用“-include”来代替“include”,来忽略由于包含文件不存在或者无法创建时的错误提示:
“-”的意思是告诉make,忽略此操作的错误。make继续执行
如:
-include FILENAMES...
使用这种方式时,当所要包含的文件不存在时不会有错误提示、make也不会退出
区别:
include : 如果程序找不到include的文件,make就会停止
-include: 找不到你所包含的文件时不停止执行,忽略该错误
sinclude: 为了和其它的make程序进行兼容。也可以使用“sinclude”来代替“-include”(GNU所支持的方式)