Makefile 基本知识

Makefile

Makerfile是一个可以帮助我们自动化编译的工具,可以用于构建大型项目,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

语法

1
2
target: prerequisites
command

其中

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基本知识/
Author
ShijieQ
Posted on
September 17, 2022
Licensed under