vim中make/makefile

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用于声明伪对象,不管目标对象是否最新,都要在生成一次。

猜你喜欢

转载自blog.csdn.net/weixin_43767691/article/details/90229325