2010-12-18 81 views
8


我看到VC++包含一个名为/ show include的选项来列出每个翻译单元中包含文件的层次结构。这似乎是一个非常有用的选择 - 在大型项目中优化/改进编译时间。/show在g ++中包含等价选项

问题
是否有GNU G ++编译器的任何等效选项来获得这些(类似的输出)?

回答

7

有多种控制方法。

-MD将列出文件,-MMD将列出非系统文件编译后的副作用

-M,-MM将产生,而不是编译名单。

-MQ,-MG,-MP和-MT生成makefile目标片段。 -MF允许你指定一个输出文件名。

-1

如果您的所有标题都包含在文件的顶部,那么可以使用一个非常简短的脚本来完成。

+1

递归头文件的机会很高。还有没有头卫兵的双重包容的影响。处理脚本是可能的,但这将是一个艰难的挑战。如果编译器提供了这个选项,那么我更喜欢那个:)。 – 2010-12-18 17:12:56

+0

如果你所有的头文件都包含守卫,它应该很简单(如果我错了,请给我一个反例,我想不出任何)。如果你不是很好地使用包括守卫......你会遇到更大的问题。 – stnr 2010-12-18 17:19:04

+0

系统头文件怎么样?外部守卫或两个标题包括彼此有条件的呢?此外,你想知道,编译器究竟做了什么,而不是你的脚本认为它应该做什么。 – 2013-09-29 12:06:26

11
gcc -H 

将打印使用的头文件的名称。