Makefile中语句的顺序

Posted 七 六 伍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Makefile中语句的顺序相关的知识,希望对你有一定的参考价值。

要学一门语言,必须先要了解它的工作原理。

(1) 依次读取变量“MAKEFILES”定义的makefile文件列表
在当前环境中查看一下有没有定义 “MAKEFILES”这个环境变量, 如果环境变量MAKEFILES被定义了,那么make会在读取其它makefile之前,先读取MAKEFILE定义的列表中的名字(由空格分隔)。建议大家不要去定义这个环境变量,因为我们并不太了解这个变量的使用,那么经常会造成一些奇怪的错误。

(2)读取工作目录下的makefile文件
指定 makefile 文件名的方法是使用‘ -f ’或‘ –file ’选项(‘ –makefile ’也能工作)。例如,‘ -f altmake ’说明名为‘ altmake ’的文件作为 makefile 文件。 如果您不使用‘-f’或‘–file’选项,缺省的是按次序查找 ‘GNUmakefile’ , ‘makefile’ , 和 ‘Makefile’ ,使用这三个中第一个能够找到的存在文件或能够创建的文件。

(3) 依次读取工作目录makefile文件中使用指示符“include”包含的文件
比如在u-boot的主Makefile文件中可以找到下面这“include”,它就是将顶层目录下的config.mk文件包含到Makefile文件中。

(4) 查找重建所有已读取的makefile文件的规则

(5)初始化变量值并展开那些需要立即展开的变量和函数并根据预设条件确定执行分支
变量跟函数都比较熟悉了,那预设条件是指什么?就是条件语句啦!比如: ifeq… else….endif这样的条件语句,根据条件来确定执行分支。

(6)根据“终极目标”以及其他目标的依赖关系建立依赖关系链表

(7) 执行除“终极目标”以外的所有的目标的规则(规则中如果依赖文件中任一个文件的时间戳比目标文件新,则使用规则所定义的命令重建目标文件)

(8) 执行“终极目标”所在的规则。

注意:make和shell script的执行区别。shell script 的执行方式是由上而下、由左而右。

以上是关于Makefile中语句的顺序的主要内容,如果未能解决你的问题,请参考以下文章

Makefile中语句的顺序

Makefile学习13——理解make的解析行为

在 Makefile 中处理汇编文件 - 包含语句问题?

如何影响目标的顺序,为 Makefile.am 添加额外的步骤等?

在 Makefile.am(automake) 中使用 if 语句

makefile(03)_条件判断