在查看构建系统时,很多(SCons,bjam,cmake,Tundra等)都有内置的#include扫描程序。然而gcc& icc提供-MMD
(或-MD
)选项,该选项输出C ++文件所依赖的头文件的名称。
-MMD
依赖选项似乎可靠。如果将#include
添加到C文件,其时间戳将更改,以便构建系统重新编译它。如果向头文件添加#include
,其时间戳将会更改,并且会重新编译所有受影响的C文件。
包括扫描系统中断,但-MMD
在我看来是健壮的。哪个最好,为什么?
答案 0 :(得分:6)
-MMD
最好,因为你给出的原因和更多。
使编译器在正常编译过程中输出依赖项可确保完全相同的编译器选项集(如-I
路径和宏)对编译和查找依赖项有效。与确保将两个独立工具使用相同的选项相比,这更不冗余且更不容易出错。