"include"指示符告诉 make 暂停读取当前的 Makefile,而转去读取"include"指定的一个或者多个文件,完成以后再继续当前 Makefile 的读取。

为什么要include其他文件呢?

  1. 对于一些通用的变量定义、通用规则,写在一个文件中,任意目录结构中的makefile想要使用这些通用的变量或规则时,include指定的文件就好了,而不用在每个makefile中又重写一遍。
  2. 对于源文件自动生成依赖文件(makefile之目录搜索&自动依赖)时,将这些个依赖关系保存成文件,在需要使用时include进来,这样少了人为的干预,同时也减少的错误的发生。

include是怎样进行搜索的?

如果在当前目录下或者指定的绝对路径找不到目标文件,make将根据文件名进行查找:

a. 查找使用命令行选项 "-I" 指定的目录;

b. "/usr/gnu/include","/usr/local/include","/usr/include",如果这些目录存在的话;

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

有时候,当被include的文件不重要时,也就是说是否include了,没太大关系,那么可以在include前加"-",表示忽略该错误。

-include FILENAMES...

使用这种方式时,当所要包含的文件不存在时不会有错误提示、make也不会退出。

makefile之include的更多相关文章

  1. Makefile中include、-include、sinclude

    include.-include.sinclude使用 在 Makefile 使用 include 关键字可以把别的 Makefile 包含进来,这很像 C 语言的#include,被包含的文件会原模 ...

  2. Makefile中include、-include、sinclude的区别

    如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件:make将根据文件名试图在以下几个目录下查找:首先,查找使用 ...

  3. makefile的include用法

    include 使用方法 : include filename.mk 作用: 暂停当前的makefile执行,去执行指定的makefile,执行完毕后继续执行当前的makefile -include ...

  4. 怎么写makefile?(转)

    跟我一起写 Makefile 陈皓 第一章.概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 pr ...

  5. 【转】Linux makefile 教程 非常详细,且易懂

    From: http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫<Linux环境下的C ...

  6. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  7. Makefile经典教程(掌握这些足够)

    makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员 ...

  8. Linux makefile 教程 非常详细,且易懂

    最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...

  9. 转载-------makefile 使用总结

    转载自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的 ...

随机推荐

  1. ubuntu 设置静态IP GW

    网卡配置静态IP地址 编辑文件/etc/network/interfaces: sudo vi /etc/network/interfaces 并用下面的行来替换有关eth0的行:# The prim ...

  2. Visual Studio 2017各版本离线安装包获取以及安装教程

    系统:  windows 7旗舰版 前言: Visual Studio 2017版本与以往的2015.2013.2012版本不同,采用了新的模块化安装方法.微软官方也并未提供ISO镜像,作者根据官方提 ...

  3. UDP套接字——(DGRAM)

    /*********************程序相关信息********************* * 程序编号:014 * 程序编写起始日期:2013.11.29 * 程序编写完成日期:2013.1 ...

  4. 水晶报表WEB方式下不打印的问题

    水晶报表版本是10.2.3600.0,是vs2005自带的.功能原来正常,服务器重做后不能打印,但是导出功能正常. 研究的大概情况: 1.水晶报表的web相关代码位于\aspnet_client\sy ...

  5. ASP源代码中文乱码怎么办

    ASP程序如果是UTF-8编码格式将会乱码,将其转换为ASCII码即可 如图所示

  6. WCF 之 数据契约

    前面几篇讲的都只能传递string类型的简单参数,数据契约就是用来解决如传递一个带有多个属性的Class类型的对象的. WCF推荐使用数据契约的方式实现数据的序列化.这部分的内容很好理解但是很重要,先 ...

  7. spring测试实例

    我们以前要进行单元测试,必须先得到ApplicationContext对象,再通过它得到业务对象,非常麻烦,重复代码也多.基于spring3的单元测试很好的解决了这个问题 基于spring3的单元测试 ...

  8. poj 1125 (floyed 最短路径)

    Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26395   Accepted: ...

  9. CSDN日报20170401 ——《假设你还是“程序猿”,我劝你别创业!》

    [程序人生]假设你还是"程序猿".我劝你别创业! 作者:北漂周 在IT这一行做得久了,会接触到无数让人哭笑不得的外行话. 「我们就差一个写代码的了」是当中典型的一种,之所以黑它.不 ...

  10. SQL中的等号、IN、LIKE三者的比较

    SQL中的等号.IN.LIKE三者的比较SQL 中等号.IN.LIKE 三者都可以用来进行数据匹配 .但三者并不相同. 等号是用来查找与单个值匹配的所有数据: IN 是 用来查找 与多个值匹配的所有数 ...