指示符“include”、“-include”和“sinclude”

如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使用命令行选项“-I”或者“--include-dir”指定的目录,如果找到指定的文件,则使用这个文件;否则继续依此搜索以下几个目录(如果其存在):“/usr/gnu/include”、“/usr/local/include”和“/usr/include”。

当在这些目录下都没有找到“include”指定的文件时,make将会提示一个包含文件未找到的告警提示,但是不会立刻退出。而是继续处理Makefile的后续内容。当完成读取整个Makefile后,make将试图使用规则来创建通过指示符“include”指定的但未找到的文件,当不能创建它时(没有创建这个文件的规则),make将提示致命错误并退出。会输出类似如下错误提示:

      Makefile:错误的行数:未找到文件名:提示信息(No such file or directory

      Make*** No rule to make target ‘<filename>’. Stop

通常我们在Makefile中可使用“-include”来代替“include”,来忽略由于包含文件不存在或者无法创建时的错误提示(“-”的意思是告诉make,忽略此操作的错误。make继续执行)。像下边那样:

-include FILENAMES...

使用这种方式时,当所要包含的文件不存在时不会有错误提示、make也不会退出;除此之外,和第一种方式效果相同。以下是这两种方式的比较:

使用“include FILENAMES...”,make程序处理时,如果“FILENAMES”列表中的任何一个文件不能正常读取而且不存在一个创建此文件的规则时make程序将会提示错误并退出。

使用“-include FILENAMES...”的情况是,当所包含的文件不存在或者不存在一个规则去创建它,make程序会继续执行,只有真正由于不能正确完成终极目标的重建时(某些必需的目标无法在当前已读取的makefile文件内容中找到正确的重建规则),才会提示致命错误并退出。

为了和其它的make程序进行兼容。也可以使用“sinclude”来代替“-include”(GNU所支持的方式)。

Makefile中指示符“include”、“-include”和“sinclude”的区别相关推荐

  1. makefile中一些符号的含义

    先标注一个很好的makefile教程 这里归纳了如下符号的含义,请对号入座如下 $@, $^, $<, $?和=, +=, :=, ?=和:\ 和 $, $$和% section1:(自动化变量 ...

  2. makefile中的include *******

    对于makefile中的include ***,***指的是包含的文件,当执行makefile时,先执行include ***这句,加载包含的文件(夹),如果不存在则会报错! 如果在include前面 ...

  3. Android Makefile中inherit-product函数和include的区别

    在 Android Makefile中inherit-product函数和include都是执行某个文件. include 使用: include device/mediatek/mt2712/dev ...

  4. Android Makefile中inherit-product函数简介,以及与include的区别

    在 Android Makefile 中时不时会看见 inherit-product 函数的使用,类似下方这样:         $(call  inherit-product,  vendor/do ...

  5. Makefile中的include指令

    1.假设/home/ldeng/demo.mk文件,内容如下: hello:     cmake      make      make install 2.在我们自己的Makefile文件可以inc ...

  6. Makefile的重建与include指令

    Makefile的重建与include指令 include指令 当make看到include指令时,会事先对通配符以及变量引用进行扩展,然后试着读引入文件(include file). 如果这个文件存 ...

  7. vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法

    vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法 使用Everything查找afxres.h文件,如果没有everything的,可以到 ...

  8. require与include+php,PHP中include与require有什么区别

    PHP中include与require有什么区别 发布时间:2021-01-13 15:24:31 来源:亿速云 阅读:81 作者:Leah PHP中include与require有什么区别?相信很多 ...

  9. Makefile中的变量

    Makefile中的变量 2007-11-03 12:03 Makefile中变量有以下几个特征: 1. Makefile中变量和函数的展开(除规则命令行中的变量和函数以外),是在make读取make ...

最新文章

  1. 洛谷P1110 报表统计 multiset stl好题
  2. springbatch apache-activemq 整合(往mq中put数据,从mq中take数据)
  3. 第5次作业+105032014166+张珍珍
  4. DirectX 开发环境配置
  5. android tools ignore,android 中tools:ignore=UselessParent这个属性的含义是什么?
  6. C# 中 ConcurrentDictionary 一定线程安全吗?
  7. python网络爬虫的特点_Python网络爬虫(一)- 入门基础
  8. 【Cqoi2006】【BZOJ2222】猜数游戏(乱搞)
  9. Linux操作系统 和 Windows操作系统 的区别
  10. WC2013 糖果公园
  11. 利用SVD(Singular Value Decomposition)简化数据
  12. AMD,CMD,UMD,CommonJS
  13. IDEA 2018下载及破解
  14. 微信公众号开发测试平台地址
  15. DLL load failed while importing _swigfaiss: 找不到指定的模块。
  16. dlang语法的简单整理
  17. xmlhttp.readyState的值及解释
  18. UvaLA 4670 Dominating Patterns
  19. 金蝶云系统显示服务器离线,金蝶kis显示云服务器已离线
  20. [2022软工第三次作业]结对编程项目——最长英语单词链

热门文章

  1. 解除织梦dedeCMS标题/关键词/ 简略标题长度限制听语音
  2. HDU 5289 Assignment(单调队列)
  3. 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器...
  4. Java——我的概念
  5. [Nhibernate]对象状态
  6. 《背包问题》 动态规划
  7. linux rpm 安装包制作
  8. varchar与nvarchar的区别
  9. 小猿圈之git 的几个好用自定义命令
  10. 蓝桥学院2019算法题1.7