6

在查看构建系统时,其中很多(SCons、bjam、cmake、Tundra 等)都有内置的#include 扫描器。然而 gcc 和 icc 提供了一个-MMD(或-MD)选项,它输出 C++ 文件所依赖的头文件的名称。

-MMD依赖选项似乎是可靠的。如果将 a 添加#include到 C 文件中,它的时间戳会发生变化,因此构建系统会重新编译它。如果将 a 添加#include到头文件,它的时间戳会改变,并且会重新编译所有受影响的 C 文件。

包括扫描系统中断,但-MMD在我看来是健壮的。哪个最好,为什么?

4

1 回答 1

11

-MMD是最好的,因为你给出的原因等等。

让编译器输出依赖项作为正常编译过程的一部分可确保完全相同的一组编译器选项(例如-I路径和宏)在编译和查找依赖项时生效。与确保两个单独的工具使用相同的选项相比,这更少冗余且更不容易出错。

于 2012-08-24T15:59:46.077 回答