理论教育 Makefile语法规则解析

Makefile语法规则解析

时间:2023-11-25 理论教育 版权反馈
【摘要】:Makefile 中只有行注释, 用“#”字符起头; 如果Makefile 中使用“#”做普通字符, 需进行转义, 如: “/#”。Makefile 脚本文件还有变量、 函数等很多相关语法, 此处暂时不深入讨论。另外, 对于学习语法细节, 建议可以通过读Linux 系统中现有的脚本实例学习, 如下载GCC 源码包里的Makefile 文件。

Makefile语法规则解析

Makefie 文件定义了编译时需要的多个源文件之间的依赖关系, 并说明了如何利用各个源文件生成目标的命令操作。 其语法规范较简单, 一般由一种两行的脚本单元组成, 要注意第二行语句必须用Tab 缩进, 不能用空格实现, 其语法表述如下。

target: 可以是目标文件, 也可以是执行文件, 还可以是一个标签(伪目标)。

prerequisites: 就是要生成那个target 所需要的文件或是目标。

command: 就是为了生成目标, Make 需要执行的Shell 命令。

prerequisites 中如果有一个以上的文件比target 文件要新的话, command 所定义的命令就会被执行。 这就是Makefile 的核心和规则。 下面看一个典型例子。(www.daowen.com)

#来源于GNU Make 使用手册, 该工程有8 个C 文件和3 个头文件。

Makefile 中只有行注释, 用“#”字符起头; 如果Makefile 中使用“#”做普通字符, 需进行转义, 如: “/#”。 “ \ ”符号是使长句子换行显示, 提高易读性。

由于Make 有自动推导的功能, 所以隐晦的规则也允许我们简略地书写Makefile, 如生成目标执行的动作中能体现依赖于哪个C 文件, 依赖关系里可以省略不写“.c”文件, 只写“.h”文件即可。

Makefile 脚本文件还有变量、 函数等很多相关语法, 此处暂时不深入讨论。 另外, 对于学习语法细节, 建议可以通过读Linux 系统中现有的脚本实例学习, 如下载GCC 源码包里的Makefile 文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈