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.执行生成命令