个人主页:平行线也会相交
欢迎 点赞 收藏✨ 留言✉ 加关注本文由 平行线也会相交 原创
收录于专栏【Linux专栏】
本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论
make是一个命令,而Makefile是当前目录的一个文件。
make/Makefile
是完成大型项目非常好用的工具。它可以帮助项目团队更好地组织和管理代码,提高构建效率和可维护性,从而加快项目开发和交付的速度。
可以毫不犹豫地这样说:会不会写Makefile,从侧面说明了一个人是否具备完成大型项目的能力。
make和Makefile是紧密相关的概念,两者结合使用可以实现自动化的项目构建和管理。make通过读取Makefile文件,根据其中的规则和命令来执行构建任务,而Makefile提供了一种描述规则和依赖关系的格式,使得构建过程可以被自动化和可重复使用。
make是一个构建工具,用于自动化构建软件项目。
make命令执行后,会自动的在当前目录下寻找Makefile/makefile文件,然后根据Makefile/makefile文件内部对应的依赖关系执行对应的依赖方法形成目标文件。
Makefile是一个文本文件,它包含了一系列的规则和命令,用于描述项目的构建过程。Makefile中定义了目标(target)以及每个目标的依赖关系、构建规则和执行命令。这些规则和命令告诉make如何根据源代码文件和依赖关系自动化地执行编译、链接和其他构建操作。
创建一个Makefile文件:
touch Makefile
编译Makefile文件:
vim Makefile
依赖关系:mycode:test.c
。mycode可执行文件之所以能够生成是因为mycode可执行文件依赖于源文件test.c。
但是仅仅有以来关系是不够生成mycode可执行文件的,我们还得有依赖方法。
依赖方法:gcc -o mycode test.c
。
Make 工具会从指定的目标开始,根据 Makefile 文件中所定义的依赖关系进行递归扫描。
当执行 make 命令时,如果没有指定目标,默认会执行 Makefile 文件中的第一个目标。Make 工具首先会检查该目标的依赖关系。如果该目标有依赖项,工具会继续递归扫描这些依赖项的依赖关系,并按照依赖关系的顺序执行相应的命令。
解释:
mycode依赖于mycode.o
mycode.o依赖于mycode.s
mycode.s依赖于mycode.i
mycode.i依赖于test.c
但是真正保存这种依赖关系的结构是栈式结构(先进后出)。
执行 make clean
命令后,会按照 clean 目标下定义的依赖方法依次执行,删除所指定的文件或文件夹。
拓展一:
如果想要禁止显示命令本身,只输出命令执行结果,可以在命令前加上@
。即通过在每个命令规则行前添加@
,可以阻止显示命令本身,只输出命令执行结果。
拓展二(特殊符号):
.PHONY
:用于声明一个伪目标(Phony Target)总是执行目标下定义的命令。好了,以上就是本文的全部内容,主要对项目自动构建化工具-make/Makefile一些基本语法和用法进行了介绍。
就到这里吧,再见啦友友们!!!