How to find header dependencies for large scale projects on linux我正在处理一个非常大型的项目,其中的编译时间很长。我可以在Linux上使用哪些工具(最好是开放源代码)来查找包含最多的文件并优化其使用率? 这里的答案将为您提供跟踪#include依赖关系的工具。但是没有提到优化之类的东西。 此外:"大型C软件设计"这本书应该有所帮助。 签出makdepend 使用Unix哲学"将许多小工具粘合在一起",我建议编写一个简短的脚本,该脚本使用-M(或-MM)和-MF(OUTFILE)选项调用gcc(如此处所述)。这将生成make工具的依赖项列表,您可以轻松地对其进行解析(相对于直接解析源文件)并提取出所需的信息。 从源树的根目录执行以下操作(\\\\ t为制表符):
第1行获取所有包含行。 诸如doxygen之类的工具(与graphviz选项一起使用)可以为包含文件生成依赖关系图...我不知道它们是否可以为您要执行的操作提供足够的概述,但值得尝试。 该页面中的Bash脚本不是很好的解决方案。它仅适用于简单项目。实际上,在大型项目中,例如在标题页中进行描述,经常使用C预处理器(#if,#else,...)。只有更复杂的优质软件(例如makedepend或scons)才能提供优质信息。 gcc -E可以提供帮助,但是在大型项目中,其结果分析是浪费时间。 使用ccache。它将输入的内容散列到编译中,并缓存结果,这将大大提高此类编译的速度。 如果要检测多个包含,以便删除它们,则可以按照Iulian?erb?noiu的建议使用makedepend:
将对每个包含多个内容发出警告。 如果您想知道其中最包含哪些文件,请使用以下bash命令:
|