在查看构建系统时,许多系统(SCons,bjam,cmake,Tundra等)都具有内置的#include扫描器。但是gcc和icc提供了-MMD
(或-MD
)选项,该选项输出C ++文件所依赖的头文件的名称。-MMD
依赖项选项似乎是可靠的。如果将#include
添加到C文件,其时间戳将更改,因此构建系统将重新编译它。如果将#include
添加到头文件中,其时间戳将更改,并且它将重新编译所有受影响的C文件。
包括扫描系统中断,但是-MMD
在我看来似乎很健壮。哪个最好,为什么?
最佳答案
-MMD
最好,因为您给出的原因以及更多。
作为正常编译过程的一部分,让编译器输出依赖项可确保完全相同的一组编译器选项(例如-I
路径和宏)对编译和查找依赖项有效。与确保为两个单独的工具使用相同的选项相比,这样做的冗余度较小,出错的可能性较小。