现在的位置: 首页 > 云计算 > 正文

Makefile文件中包含哪些规则?

2020年02月06日 云计算 ⁄ 共 1348字 ⁄ 字号 评论关闭

  想要书写一个 Makefile,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 是我们文件编译的相关规则的描述,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示:

  targets:prerequisites

  command

  或者是

  targets:prerequisites;command

  command

  相关说明如下:

  targets:我们的目标,可以是 Object File(我们称它为中间的文件),也可以是可执行文件,还可以是一个标签;

  prerequisites:是我们的依赖文件,要生成 targets 需要的文件或者是目标。可以是多个,也可以是没有;

  command:make 需要执行的命令(任意的 shell 命令)。可以有多条命令,每一条命令占一行。

  注意:我们的目标和依赖文件之间要使用冒号分隔开,命令的开始一定要使用Tab键。

  我们通过下面的例子来具体使用一下我们的规则:

  test:test.c gcc -o test test.c

  我们在 Makefile 中实现的功能就是编译 test.c 文件,我们通过这个实例可以详细的说明一下 Makefile 的具体的使用情况。其中 test 是我们的目标文件,也是我们的最终生成的可执行文件,我们的依赖文件就是 test.c 源文件,重建目标文件需要执行的操作是gcc -o test test.c。这就是我们的 Makefile 的基本的语法规则。

  使用 Makefile 的方式:我们的编写好 Makefile,然后在命令行执行 "make" 命令,程序就会自动执行,得到我们的目标文件。

  通过上面的例子我们可以了解到,Makefile 的规则很简单。但这并不是我们的全部,这个仅仅是 Makefile 的冰山一角。单靠这样的规则满足不了我们对于大的工程项目的编译。甚至是几个文件的编译都有可能都是问题,我们还要学习的东西很多。

  我们可以的简单的介绍一下 Makefile 中都有什么样的具体内容。它主要包含有五个部分:

  1) 显式规则

  显式规则说明了,如何生成一个或多的的目标文件。这是由 Makefile 的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。

  2) 隐晦规则

  由于我们的 make 命名有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写 Makefile,这是由 make 命令所支持的。

  3) 变量的定义

  在 Makefile 中我们要定义一系列的变量,变量一般都是字符串,这个有点像C语言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上。

  4) 文件指示

  其包括了三个部分,一个是在一个 Makefile 中引用另一个 Makefile,就像C语言中的 include 一样;另一个是指根据某些情况指定 Makefile 中的有效部分,就像C语言中的预编译 #if 一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。

  5) 注释

  Makefile 中只有行注释,和 UNIX 的 Shell 脚本一样,其注释是用“#”字符,这个就像 C/C++ 中的“//”一样。如果你要在你的 Makefile 中使用“#”字符,可以用反斜框进行转义,如:“\#”。

抱歉!评论已关闭.