make/makefile:项目自动化构建工具
-
make/makefile:项目自动化构建工具
-
makefile:普通文本文件,记录了项目的流程构建规则
-
make:解释程序,到当前执行make命令的目录下寻找makefile文件,并且对makefile中记录的项目构建规则进行解释执行。
-
大型工程,一个目标可能由成千上万个文件组成,要是哪个文件修改那么就要重新进行编译,但是文件很多呀,要是把所有文件再gcc main.c main2.c …-o main.h确实很麻烦,所以一般大型工程进行分步编译,gcc -c main.c -o main.o 每个文件-c生成一个到链接阶段的文件,然后最后再同意将.o文件进行统一编译,这样要是修改了哪个文件,最后就只需把那一个文件进行到链接阶段的编译,然后整体文件再编译就好了,但是这样分步编译文件太多也会很麻烦,所以make/makefile.
-
makefile编写规则: 生成文件名(目标对象):目标文件(依赖对象) …
--------------------------- [tab] 执行语句
make执行规则: 解释执行时,在makefile中准找目标对象(只寻找第一个对象),找到对象后,执行命令操作。 -
如果有目标对象,判断目标对象是否存在,如果目标对象不存 在执行命令操作,生成目标对象。
-
如果目标对象已经存在,判断是否有依赖对象
-
没有依赖对象:直接报错,不需要生成
-
如果有依赖对象:判断依赖对象是否存在?
-
依赖对象存在:通过目标对象和依赖对象的最后一次修改时间 判断是否需要重新生成目标对象
-
依赖对象不存在:这时候make继续在makefile中继续寻找依赖 对象的生成规则,先生成依赖对象,再生成目标对象。
-
类似于递归创建:
-
预定义变量: -
$@(目标对象)
-
$^(所有依赖对象)
-
$<(依赖对象中的第一个)
.PHONY用于声明伪对象,不管目标对象是否最新,都要在生成一次。