c++ - make中的依赖顺序

标签 c++ makefile gnu-make

因为据说依赖顺序在 makefile 中确实很重要。我想了解如何:

finalObjectFile: x.o main.o y.o
    g++ x.o main.o y.o -o finalObjectFile

main.o: header/x.h source/main.cpp
    g++ -c source/main.cpp

x.o: header/x.h source/x.cpp
    g++ -c source/x.cpp

y.o: source/y.cpp header/x.h
    g++ -c source/y.cpp

在上面的代码中我交换了头文件x.h的位置:

x.o: header/x.h source/x.cpp
        g++ -c source/x.cpp

y.o: source/y.cpp header/x.h
        g++ -c source/y.cpp

但输出没有受到影响!

哪种依赖关系真正重要的是按顺序排列?

最佳答案

在所示上下文中,源代码之前的 header 源代码之前的 header 之间没有显着差异。规则说(例如):

  • x.o 必须比 header/x.hsource/x.cpp 更新。

这两个依赖项出现的顺序无关紧要;如果任一依赖项比 x.o 新,则将执行该命令。

顺序何时重要?举例说明这有点棘手,但如果您有多个中间文件在您进行时生成,则可能是一个因素。如果您执行的某些命令影响多个文件,但您没有正确地告诉 make 所有这些交互,这可能尤其是一个问题。

但是,依赖顺序通常不是问题。

关于c++ - make中的依赖顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664760/

相关文章:

c++ - 使用 std::vector<std::string> myString 时出错

assembly - Assembly 的 Makefile 使用隐式规则而不是显式规则

c++ - 如何在 OpenGL 中将文本渲染到正方形(4 个顶点)上?

c++ - 为什么 connect() 会给出 EADDRNOTAVAIL?

makefile - 如何撤消中间文件删除

c++ - Makefile 在运行时无法链接库

makefile - 配方更改后如何重建

makefile - 我可以判断是否在 Makefile 中使用了 --jobs 吗?

c++ - 使用 CUDA 调试时的 CUDA 堆栈大小

c++ - 在 LLVM 下的 Makefile 中通过 LDFLAGS 加载 zlib 的正确方法是什么?