在查看构建系统时,许多系统(SCons,bjam,cmake,Tundra等)都具有内置的#include扫描器。但是gcc和icc提供了-MMD(或-MD)选项,该选项输出C ++文件所依赖的头文件的名称。

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

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

最佳答案

-MMD最好,因为您给出的原因以及更多。

作为正常编译过程的一部分,让编译器输出依赖项可确保完全相同的一组编译器选项(例如-I路径和宏)对编译和查找依赖项有效。与确保为两个单独的工具使用相同的选项相比,这样做的冗余度较小,出错的可能性较小。

08-19 22:36