`
深度思索
  • 浏览: 8302 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Makefile中指示符“include”、“-include”和“sinclude”的区别

阅读更多

指示符include-includesinclude

 

如果指示符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来代替-includeGNU所支持的方式)。

转自http://blog.csdn.net/xiaozhi_su/article/details/4202779

0
0
分享到:
评论

相关推荐

    Makefile文件arm-none-linux-gnueabi-gcc编译文件

    Makefile文件arm-none-linux-gnueabi-gcc编译文件,linux下多个.C文件统一使用make文件进行编译

    vasp 6.1.2 安装包和 makefile.include文件

    在这个压缩包中,我们有两个关键文件:`makefile.include` 和 `vasp.6.1.2.tar.gz`。 `makefile.include` 是一个Makefile的包含文件,它通常包含了构建程序时的编译规则、路径设置、编译选项等信息。在Vasp的安装...

    GNU-Makefile中文手册-Ver3.8.pdf

    - **Makefile简介**:Makefile包含目标、依赖和命令,用于指示make工具如何构建项目。 - **规则介绍**:规则定义了如何从依赖文件生成目标文件,如`target : dependencies command`。 - **简单示例**:例如,一个...

    项目实用makefile示例--project-test

    大中型的实用项目中,多人协作开发,除了分层次目录存放源码,还要考虑源码权限,自动化的编译方案。linux下开发,makefile树,是一种常用方案。本资源是一个项目目录树和makefile树的简单示例。具体说明参考:...

    嵌入式开发教程之深入学习Make命令和Makefile(上)--千锋培训

    嵌入式开发中,Make命令和Makefile是关键的构建工具,它们可以帮助开发者高效地管理复杂的项目,确保在源文件更改后,仅重新编译必要的部分。本文将深入探讨这两个概念,以帮助开发者理解如何利用它们提高开发效率。...

    Uboot顶层Makefile分析-思维导图-MX6U嵌入式linux系统移植学习笔记基于正点原子阿尔法开发板

    Uboot顶层Makefile分析-思维导图-MX6U嵌入式linux系统移植学习笔记基于正点原子阿尔法开发板

    Makefile文件例程于工程模板

    在这个"Makefile文件例程于工程模板"压缩包中,提供了6个逐步进阶的Makefile示例,从基础到复杂,适合初学者学习和理解Makefile的编写以及在中小型项目中的应用。 1. **Makefile基本结构** Makefile通常由目标、...

    Makefile基础使用_嵌入式-常用知识&面试题库_大厂面试真题.pdf

    * Makefile可以使用`-include`语句来包含其他Makefile文件,如果包含的文件不存在,则不报错。 六、Makefile的应用场景 * 嵌入式系统开发:Makefile可以用来自动编译和构建嵌入式系统的软件。 * 面试题库:...

    GNU Linux Makefile-v3.80.pdf

    - **override指示符**:介绍override指示符的作用,以及如何使用它来覆盖默认的变量值。 - **多行定义**:说明如何在Makefile中定义跨行的变量值,以及多行定义的注意事项。 - **系统环境变量**:解释如何在Makefile...

    学生管理系统(C语言+链表)

    /root/xiangm/stu_sys |-- Makefile |-- include | |-- other | | `-- other.h | |-- student | | `-- student.h | |-- student_public.h | `-- teacher | `-- teacher.h ...包括各个文件中的Makefile编写

    Makefile中文手册

    - `override`指示符用于覆盖默认的行为。 **6.8 多行定义** - 变量定义可以跨越多行。 **6.9 系统环境变量** - 可以在Makefile中使用环境变量。 **6.10 目标指定变量** - 可以为特定的目标定义变量。 **6.11 ...

    makefile中文手册(200页pdf文档)

    - **指示符**:如 `.PHONY` 用于定义虚拟目标,不会对应到任何实际文件。 - **注释**:以 `#` 开头的行被视为注释,不被 make 执行。 #### 3. Makefile 总述 - **内容结构**:通常包括目标、依赖项和命令。 - **...

    fast-rcnn的Makefile.config文件(lee)

    fast-rcnn的Makefile.config文件(lee)

    makefile介绍Makefile的知识

    Makefile 的规则是指 Makefile 文件中编写的规则,它告诉 make 命令如何编译和链接程序。Makefile 的规则主要包括以下几点: 1. 目标文件:目标文件是 Makefile 的核心,它们是 Makefile 文件中最重要的组成部分。...

    makefile.pdf

    -include missing.mk ``` #### 四、环境变量MAKEFILES - 如果当前环境中有定义环境变量`MAKEFILES`,则其中列出的所有文件都将被自动包含到当前Makefile中。 - 例如,如果`MAKEFILES`被设置为`/path/to/file.mk`...

    makefile中文手册

    - **override指示符**:如何覆盖已定义的变量。 - **多行定义**:如何在多行定义变量。 - **系统环境变量**:如何在Makefile中使用环境变量。 - **目标指定变量**:为特定的目标定义变量。 - **模式指定变量**:根据...

    GNU_Makefile中文手册

    7. **override 指示符** - 优先使用 Makefile 文件中的变量定义。 8. **多行定义** - 在多行中定义变量。 9. **系统环境变量** - 使用系统环境变量作为 Makefile 变量的值。 10. **目标指定变量** - 为特定目标...

    makefile详解介绍

    这个过程中,Makefile负责协调源文件的编译和链接顺序,确保每次构建都是正确的且高效的。 #### 三、Makefile的基本结构与规则 为了更好地理解Makefile的工作原理,接下来我们将通过一个具体的示例来说明Makefile...

    Linux下C语言的makefile编写

    ### Linux下C语言的makefile编写 #### 一、引言 在Linux环境下,makefile是一种用于自动化构建软件项目的脚本文件。...希望本文能帮助你在实际工作中更好地利用makefile来管理和优化软件构建流程。

Global site tag (gtag.js) - Google Analytics