make命令和Makefile

makefile文档

1 介绍

make是一个解释makefile中指命的命令工具。

makefile关系到了整个工程的编译规则。

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

2 MakefIle

Makefile里主要包含了五类东西:显示规则、隐晦规则、变量定义、文件指示和注释。

  1. 显示规则:说明了如何生成一个或多个目标文件。明显指出要生成的文件,文件依赖文件,生成文件。
  2. 隐晦规则:make有自动推导的功能,隐晦规则能简略书写Makefile。
  3. 变量定义:
  4. 文件指示:
  5. 注释:

书写规则

规则包含两个部分,一个是依赖关系,一个是生成目标的方法。

targets: prerequisites

    command

    ...

targets是文件名,以空格分开,可以使用通配符。一般来说,我们的目标基本上是一个文件,但也有可能是多个文件。

command是命令行,如果其不与“targets:prerequisites”在一行,那么,必须以[Tab键]开头,如果和prerequisites在一行,那么可以用分号做为分隔。

prerequisites也就是目标所依赖的文件(或依赖目标)。如果其中的某个文件要比目标文件要新,那么,目标就被认为是“过时的”,被认为是需要重生成的。

伪目标

“.PHONY”来显式地指明一个目标是“伪目标”

伪目标只是一个标签不会生成文件

3 make命令

执行步骤:

  1. 读入所有的Makefile
  2. 读入被include的其它Makefile
  3. 初始化文件中的变量
  4. 推导隐晦规则,并分析所有规则
  5. 为所有的目标文件创建依赖关系链
  6. 根据依赖关系,决定哪些目标要重新生成
  7. 执行生成命令

猜你喜欢

转载自blog.csdn.net/weixin_43932656/article/details/106529361