Makefile中的文件包含

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。

Makefile 中包含其他的文件,使用的关键字是 "include"。

make 读取到 "include" 关键字时,会暂停读取当前的 Makefile,转去读取 "include" 包含的文件,读取结束后再继读取当前的 Makefile 文件。

1、include的使用方法 

"include" 使用的具体方式如下:

include <filenames>

filenames 是 shell 支持的文件名(可以使用通配符表示的文件)。

"include" 关键字所在的行首可以包含空格(读取的时候空格会被自动的忽略),但不能使用 Tab 开始,否则会把 "include" 当作式命令来处理。包含的多个文件之间要使用空格分隔开。

使用 "include" 包含进来的文件中如果存在函数或者是变量的引用,它们会在Makefile 中展开。

2、include 的使用场合

在一个工程文件中,每一个模块都有一个独立的 Makefile 来描述它的重建规则。它们需要定义一组通用的变量定义或者是模式规则。通用的做法是将这些共同使用的变量或者模式规则定义在一个文件中,需要的时候用 "include" 包含这个文件。

或者,当根据源文件自动产生依赖文件时,我们可以将自动产生的依赖关系保存在另一个文件中,然后在 Makefile 中包含该文件。

3、-include的使用方法

如果使用 "include" 包含文件时,没有给出文件的绝对路径,make 将会这样寻找文件:在执行 make 命令的时候,如果加入了选项 "-I" 或 "--include-dir"来指定路径,则路径下存在文件的话则会被使用,不存在则接着在"usr/gnu/include"、"usr/local/include" 和 "usr/include"这些路径中搜索。

如果在上面的路径中都没有找到 "include" 指定的文件,make 将会提示一个文件没有找到的警示提示,但是不会退出,而是继续执行 Makefile 的后续的内容。当完成读取整个 Makefile 后,make 将试图使用规则来创建通过 "include" 指定但不存在的文件。当不能创建的时候,文件将会保存退出。

通常用 "-include" 来代替 "include",以忽略文件不存在或者无法创建的错误提示,使用格式如下:

-include <filename>

使用方法和 "include" 的使用方法相同。

这两种方式之间的区别:

  • 使用 "include <filenames>" ,make 在处理程序的时候,文件列表中的任意一个文件不存在的时候或者是没有规则去创建这个文件的时候,make 程序将会提示错误并保存退出。
  • 使用 "-include <filenames>",当包含的文件不存在或者是没有规则去创建它的时候,make 将会继续执行程序,只有真正由于不能完成终极目标重建的时候我们的程序才会提示错误保存退出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse高级使用技巧

1&#xff0e; Eclipse的配置文件导入和导出功能 说明&#xff1a;可以将Eclipse的自定义的工作空间配置文件导出和导入&#xff0c;这样创建多工作空间时候就省去了再设置的烦恼。 2&#xff0e; Eclipse设置显示行号 说明&#xff1a;设置文件现实行号&#xff0c;调试错误的…

hadoop hive 的安装问题

origin: http://blog.163.com/songyalong1117126/blog/static/1713918972014124481752/hadoop hive 的安装问题 2014-02-24 16:10:13| 分类&#xff1a; hadoop|举报|字号 订阅能了一下午终于把hive搞好了&#xff0c;其中出现很多的问题1、hadoop和hive的版本问题&#xff0…

熬之滴水成石:最想深入了解的内容--windows内核机制(6)

58 进程和线程&#xff08;3&#xff09; 说完进程再说说线程&#xff0c;线程相比于进程其实有更多可说的内容。首先实现线程调用的数据结构是个栈&#xff0c;该栈记录了调用方法的信息这里面也包括了函数调用及返回的地址。线程肯定是属于某个进程&#xff0c;其控制流可以访…

Google搜索技巧总结

http://blog.sciencenet.cn/blog-44407-229042.html转载于:https://www.cnblogs.com/aze-003/p/4105261.html

【linux】学习6

鸟哥13章的东西 shell script速度较慢&#xff0c;适合用于系统管理&#xff0c;但不适合处理大量数值运算 var$((运算内容)) 可以用来做变量的加减乘除求余运算 total$(($firstnum*$secnu)) declare -i total"$firstnum*$secnu" 上面两句功能一样&#xff0c;建议用…

Makefile嵌套执行make

概述 在一个大的工程文件中&#xff0c;不同的文件按照功能被划分到不同的模块中&#xff0c;每个模块可能都会有自己的编译顺序和规则。如果在一个 Makefile 文件中描述所有模块的编译规则&#xff0c;就会显得很杂乱&#xff0c;执行时也会很不方便。 如果在不同的模块中分别…

core--线程同步(内核模式)

什么是内核&#xff1f;windows操作系统为了更好的管理进程&#xff0c;线程&#xff0c;创建了很多数据结构&#xff0c;这些数据结构运行在windows的底层&#xff0c;并不开放给开发人员&#xff1b;所以开发人员称这些结构为内核&#xff0c;但是为了开发人员能够使用&#…

hive cli启动判断hadoop version的问题

测试环境的hive cli启动时报错&#xff1a;Unable to determine Hadoop version information.hive是一个shell:使用sh -x跟踪运行过程&#xff0c;可以看到其通过hadoop version获取hdfs的版本相关的代码如下&#xff1a;# Make sure were using a compatible version of Hadoo…

Makefile变量的高级用法:变量的替换引用、变量的嵌套使用

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 我们之前已经学习过变量的定义和基本的赋值运算&#xff0c;我们可以更深入的了解一下变量的一些高级的用法。高级使用方法有两种&#xff1a;第一种是变量的替换引用&#xff0c;第二…

SAP Study Notes: BW Queriy-Variables(变量)

About Variable:1.Variable 是和InfoObject绑定的&#xff0c;可用于任何含有该IO的query中。2.Variable有以下几种类型&#xff1a;Characteristic&#xff1a;用于限制Char。 Text&#xff1a;用于在报表动态显示文本。 Hierarchy&#xff1a;用于限制Hierarchy。 Hieararchy…

Makefile中的通配符

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 Makefile 是可以使用 shell 命令的&#xff0c;所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有&#xff1a;"*"&#xff0c;"?&qu…

SCCM2012 R2集成WSUS服务器-4:部署软件更新组

在之前的文章中&#xff0c;我们已经创建好的软件更新组&#xff0c;也下载好了补丁&#xff0c;下面我们来部署这些补丁。右击软件更新组&#xff0c;选择”部署“&#xff0c;如图。进入到部署软件更新向导&#xff0c;输入部署的名称&#xff0c;并指定部署的集合。如图。在…

JavaScript Iframe富文本编辑器中的光标定位

最近在项目中碰到一个比较棘手的问题&#xff1a; 在iframe富文本编辑器中&#xff0c;有个工具栏&#xff0c;这个工具栏在iframe标签之外&#xff0c;工具栏上有一个按钮&#xff0c;点击该按钮向iframe正在编辑中的光标处插入一个图片&#xff0c;图片会插入到当前光标所在的…

Makefile目标类型大汇总

模式规则中的目标形式是多种多样的&#xff0c;它可以是一个或多个的文件&#xff0c;也可以是一个伪目标&#xff0c;或者其他的类型&#xff0c;下面是对这些类型的详细说明。 强制目标 如果一个目标中没有命令或者依赖&#xff0c;并且它的目标不是一个存在的文件名&#xf…

网站故障排查几个简单步骤

1、top命令查看cpu消耗多少(id%的值和%cpu要是一直是几百就是问题了。%wa要是大于30%也是压力大了)。还有看负载的3个值(和cpu线程是1比1关系。要是值大于线程书&#xff0c;那么也是压力过大。)top命令要是发现cpu消耗过多&#xff0c;可以知道是哪几个进程了。2、查看硬盘使用…

isset、empty、var==null、is_null、var===null详细理解

//isset&#xff1a; 判断变量是否被初始化 //它并不会判断变量是否为空&#xff0c;并且可能用来判断数组中元素是否被定义 //听说在数组用isset与array_key_exists高出4倍 $a ""; $ar[c] ""; if(!isset($a)){echo $a not isset\r\n; }else{echo $a iss…

Makefile中常见的错误信息

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 make 执行过程中所产生错误并不都是致命的&#xff0c;特别是在命令行之前存在 "-"、或者 make 使用 "-k" 选项执行时。 make 执行过程的致命错误都带有前缀字符…

Javascript中call函数和apply函数的使用

Javascript 中call函数和apply的使用&#xff1a; Javascript中的call函数和apply函数是对执行上下文进行切换&#xff0c;是将一个函数从当前执行的上下文切换到另一个对象中执行&#xff0c;例如&#xff1a; sourceObj.method.call(destObj,params1,params2) 是将sourceObj中…

Makefile隐含规则

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 隐含规则的含义 隐含规则&#xff0c;就是我们做出一些具体的操作后&#xff0c;系统自动推导完成。 编写 Makefile 的时候&#xff0c;可以使用隐含规则来简化Makefile 文件编写。 下…

WIN7 Wireshark: There are no interfaces on which a capture can be done

有的时候我们在Windows7的环境下使用Wireshark的时候&#xff0c;比如点击【Interface List】的时候&#xff0c;出现错误。 错误内容如下&#xff1a; There are no interfaces on which a capture can be done. 这个错误是因为系统没有启动NPF服务造成的。 解决的办法很简单&…