访问量: 10 次浏览
一个最终的二进制文件依赖于各种源代码和头文件是很常见的。依赖关系很重要,因为它们让 make 知道任何目标的源代码。考虑下面的例子:
hello: main.o factorial.o hello.o
$(CC) main.o factorial.o hello.o -o hello
这里,我们告诉 make,hello 依赖于 main.o 、factorial.o 和 hello.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 在哪些文件发生变化时需要重新编译目标。上述示例展示了:
hello 可执行文件依赖于三个目标文件(.o 文件).o 文件依赖于对应的 .cpp 源文件和 .h 头文件当任何一个源文件或头文件发生变化时,make 会自动重新编译相关的目标文件。