在查看构建系统时,其中很多(SCons、bjam、cmake、Tundra 等)都有内置的#include 扫描器。然而 gcc 和 icc 提供了一个-MMD
(或-MD
)选项,它输出 C++ 文件所依赖的头文件的名称。
-MMD
依赖选项似乎是可靠的。如果将 a 添加#include
到 C 文件中,它的时间戳会发生变化,因此构建系统会重新编译它。如果将 a 添加#include
到头文件,它的时间戳会改变,并且会重新编译所有受影响的 C 文件。
包括扫描系统中断,但-MMD
在我看来是健壮的。哪个最好,为什么?