博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile中include、-include、sinclude的区别
阅读量:6888 次
发布时间:2019-06-27

本文共 997 字,大约阅读时间需要 3 分钟。

如果指示符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 ‘’. Stop

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

-include FILENAMES...

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

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

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

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

转载地址:http://uxqbl.baihongyu.com/

你可能感兴趣的文章
CentOS中配置Kafka集群
查看>>
Android IOS WebRTC 音视频开发总结(六六)-- 三个角度分析美女视频直播这个行业...
查看>>
popwindow
查看>>
FastSocket学习笔记~RPC的思想,面向对象的灵活
查看>>
2015第5周三网摘
查看>>
C#系列教程——对一个对象的装箱取消转换
查看>>
整理的代码规范
查看>>
IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结...
查看>>
小知识~让你的DLL类库带上注释
查看>>
Junit测试打印详细的log日志,可以看到sql
查看>>
还是畅通工程
查看>>
深入分析Kubernetes Critical Pod(四)
查看>>
docker安装mongodb
查看>>
第69天:jQuery入口函数
查看>>
redis集群搭建
查看>>
如何在阿里云上构建一个合适的Kubernetes集群
查看>>
那些著名网站的90年代(转)
查看>>
lvs主备NAT模式上课用例(keepalived)
查看>>
jquery tips 提示层
查看>>
图解Oracle RAC全局缓存等待事件Global Cache Wait Events
查看>>