Makefile 基本知识
Makefile
Makerfile是一个可以帮助我们自动化编译的工具,可以用于构建大型项目,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
语法
1 |
|
其中
target
是目标文件,可以是Object
file,可执行文件,标签Label;
prerequisites
是生成target
所需的文件,即依赖文件;
command
是make需要执行的命令,可以是任意的shell指令。
特殊
$@
: 目标文件
$^
: 所有依赖文件
$<
: 第一个依赖文件
工作原理
如何确保每个目标文件(target)是最新的?
make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么,make就会执行后续定义的命令,生成对应的目标文件;反之则不需要操作。
在某个路径下输入make会发生什么?
make会在当前路径下寻找”makefile“或”Makefile“文件,然后寻找第一个target文件,并把其作为最终目标文件
make会从第一个target文件开始,对其依赖文件prerequisites依次检查是否存在且最新,若为否则执行command并生成
如果make过程中出错怎么办?
这需要分情况,主要有两种:
若依赖出错,即找不到被依赖的文件,且没有生成命令,则报错,并直接退出。
若命令出错,make不会理会,因为它只解决依赖问题。当然除非你的命令出错导致某个依赖文件无法生成,这样最终会导致依赖出错。
Makefile 基本知识
http://shijieq.github.io/2022/09/17/C++/Makefile基本知识/