Makefile 依赖规则写法与原理详解


发布日期 : 2023-06-27 09:03:38 UTC

访问量: 10 次浏览

在 Makefile 中定义依赖关系

一个最终的二进制文件依赖于各种源代码和头文件是很常见的。依赖关系很重要,因为它们让 make 知道任何目标的源代码。考虑下面的例子:

hello: main.o factorial.o hello.o
    $(CC) main.o factorial.o hello.o -o hello

这里,我们告诉 make,hello 依赖于 main.ofactorial.ohello.o 文件。因此,只要这些对象文件中的任何一个有变化,make 就会采取行动。

同时,我们需要告诉 make 如何准备 .o 文件。
因此,我们也需要定义这些依赖关系,如下所示:

main.o: main.cpp functions.h
    $(CC) -c main.cpp

factorial.o: factorial.cpp functions.h
    $(CC) -c factorial.cpp

hello.o: hello.cpp functions.h
    $(CC) -c hello.cpp

说明

在 Makefile 中,依赖关系告诉 make 在哪些文件发生变化时需要重新编译目标。上述示例展示了:

  1. 最终目标依赖hello 可执行文件依赖于三个目标文件(.o 文件)
  2. 目标文件依赖:每个 .o 文件依赖于对应的 .cpp 源文件和 .h 头文件

当任何一个源文件或头文件发生变化时,make 会自动重新编译相关的目标文件。