4
虽然看着构建系统,但它们中的很多(SCons,bjam,cmake,Tundra等)都有一个内置的#include扫描器。然而gcc & icc提供-MMD
(或-MD
)选项,它输出C++文件依赖的头文件的名称。“g ++ -MMD”比包含扫描更好吗?
-MMD
依赖项选项似乎是可靠的。如果将一个#include
添加到C文件中,其时间戳将会更改,以便构建系统重新编译它。如果您将一个#include
添加到头文件,它的时间戳会改变,它会重新编译所有受影响的C文件。
包含扫描系统中断,但-MMD
在我看来是强健的。哪个最好,为什么?
谢谢。你知道为什么所有这些工具都有#include扫描功能吗? – ACyclic
不是每个人都使用gcc(或icc),而旧版本的gcc只在'-MD'输出中包含文件名而不是完整的路径名,例如'foo.o:'而不是'dir1/dir2/foo.o' –
MMD的一个小问题包括列表:当你#include它会查看所有-I包括目录。如果有两个foo.h文件,它会读取第一个文件。因此,如果您在搜索列表中的前面添加一个具有相同名称的新头文件,则依赖于-MMD将会中断。 –
ACyclic