首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Makefile的执行流程,包括其他makefile

Makefile的执行流程,包括其他makefile
EN

Stack Overflow用户
提问于 2014-04-25 18:43:47
回答 1查看 1.7K关注 0票数 0

1) makefile执行流是如何工作的,假设makefile-1包含另一个makefile-2,makefile-2包含另一个makefile-3?

2)如果包含的makefile包含一些规则和变量,这三种方法都应该使用--它是如何工作的?如果一个文件不止一次包含同一个makefile,会发生什么情况?

3)对包含makefile的变量使用导出吗?-在所有这些变量中都有makefile,

我的理解是,makefile解释器(或者我不知道哪个术语更适合这里)在makefile中以行形式读取,如果有任何include指令,则生成makefile中的所有变量/规则(顶级make--包括其他)。

但是,如果两个包含makefile的文件覆盖变量或彼此的规则,会发生什么呢?是否类似于最后一个包含makefile的优先项?

5)如果包含的makefile中有任何规则调用顶级makefile的规则,那么它是否完全执行顶级makefile (从第一行开始)?

6)有两种类型的任务:

( i)在使用时扩大(=)

(二)在声明时扩展(:=)这种变量是如何在多级生成文件中处理的?

7)当我创建一个列表时,如果我使用gnumake的函数如notdir,patsubt,会发生什么?

代码语言:javascript
运行
复制
File = abc def ghi 
File += $(notdir ghi/jkl)

什么时候会发生这种情况?

代码语言:javascript
运行
复制
(and also if I use ':=' what will be the difference ?)

考虑make包含以下规则,它是否在解决依赖关系时被调用?

代码语言:javascript
运行
复制
rule : File
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-25 18:50:34

当包含makefile时,不会发生任何特殊的WRT排序。要制作,就好像构建了一个大型makefile,其中包含makefile的内容被插入到父makefile中的include语句中,然后传递要生成的一个大型makefile。

因此,重写事物的规则(变量等)如果在单个makefile中重写一个变量,则与此相同:该变量的每个后续赋值都将替换以前赋值的值。

如果您为目标定义了一个(单冒号)规则,然后稍后再做一次,您将得到一条错误消息并使其忽略其中一个。

任何makefile中列出的第一个显式目标(包括与否)将是默认目标。

等。

记住,make从不完全“执行”任何makefile。Make不是一种过程语言,就像shell脚本一样。它首先分析所有makefile并在内部构造依赖关系图。然后选择默认的目标,并从每个部分开始遍历图的各个部分。

编辑:

如果以上这些不能帮助你回答你的其他问题,那么我认为你应该尝试一下。试试,看看会发生什么!这比要求我们解释要容易得多,而且如果你自己弄清楚了,你会更好地理解它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23300718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档