指示符“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所支持的方式)。
转自http://blog.csdn.net/xiaozhi_su/article/details/4202779
相关推荐
Makefile文件arm-none-linux-gnueabi-gcc编译文件,linux下多个.C文件统一使用make文件进行编译
大中型的实用项目中,多人协作开发,除了分层次目录存放源码,还要考虑源码权限,自动化的编译方案。linux下开发,makefile树,是一种常用方案。本资源是一个项目目录树和makefile树的简单示例。具体说明参考:...
Makefile基础使用_嵌入式-常用知识&面试题库_大厂面试真题.pdf
简介,一、都是源文件太多惹得祸,二、Make程序的命令行选项和参数,三、Makefile概述,四、makefile中的依赖关系,五、makefile中的规则,六、Makefile文件举例,七、makefile中的宏,八、小结
/root/xiangm/stu_sys |-- Makefile |-- include | |-- other | | `-- other.h | |-- student | | `-- student.h | |-- student_public.h | `-- teacher | `-- teacher.h ...包括各个文件中的Makefile编写
讲得很详细,包括很多平时使用时不会注意到的细节
fast-rcnn的Makefile.config文件(lee)
包含6个Makefile工程的例程,从最简单的Makefile编写到通用模板。可以直接执行make来测试工程的编译
vasp 6.1.2 安装包和 makefile.include文件
./include - 头文件目录 ./lib - 库文件目录,外部库文件可放这里,同时项目生成的库文件也会放置在这里 ./src - 源文件目录 ./clear.sh - 清除已经生成的文件 (包括可执行文件、生成的Makefile文件,但不会清除库...
Linux/unix makefile 的详细介绍,教你如何编写Makefile文件
版权和许可 版本 本文档描述了 2014 年 12 月 7 日发布的 Makefile::GraphViz 0.21。 概要 use Makefile::GraphViz; $parser = Makefile::GraphViz->new; $parser->parse('Makefile'); # plot the tree rooted at...
0.3.1\Makefile (330, 2022-07-06) 0.4.0 (0, 2022-07-06) 0.4.0\Dockerfile (551, 2022-07-06) 0.4.0\Makefile (330, 2022-07-06) 0.4.1 (0, 2022-07-06) 0.4.1\Dockerfile (553, 2022-07-06) 0.4.1\Makefile (330,...
I../3rdparty -I/opt/arm-qt/include -I/opt/arm-qt/include/QtWidgets -I/opt/arm-qt/include/QtGui -I/opt/arm-qt/include/QtNetwork -I/opt/arm-qt/include/QtConcurrent -I/opt/arm-qt/include/QtCore -I.moc/...
最近用QTK开发一个下载(下载到开发板)工具,同时用到了Makefile/cmake和node-gyp,而且都要针对不同平台做不同的处理。这里做个记录,以备以后有需要时查阅。 Makefile 在Makefile中,可以用OS变量判断当前系统是否...
| | |-- Makefile | | `-- s3c24xx_buttons.c | |-- fb_test | | |-- fb.h | | |-- fb_test.c | | `-- Makefile | |-- leds | | |-- led_test | | |-- led_test.c | | |-- Makefile | | `-- s3c24xx_leds.c | `-- ...
本文章详细介绍了如何在Linux平台下编写makefile的基础篇。
Unix系统编程---makefile的编写Unix系统编程---makefile的编写Unix系统编程---makefile的编写
Makefile手册.doc-很详细的讲解