【发布时间】:2010-11-13 16:17:58
【问题描述】:
可能的重复:
C/C++: Detecting superfluous #includes?
How should I detect unnecessary #include files in a large C++ project?
嗨,
我一直在关注如何减少 C/C++ 项目的构建时间的大量讨论。通常,一个好的优化是通过使用前向声明来摆脱#include 语句。现在,我想知道:
是否有一个工具可以计算 C/C++ 标头之间的#include 依赖树 文件(我知道 Linux 上的 mkdep 可以做到这一点)然后开始一个“删除头文件/重新编译”循环?如果该工具可以尝试从依赖关系树中删除节点(例如,从文件中删除 #include 语句)然后重建项目以查看它是否仍然有效,那就太好了。
它不需要非常聪明(例如,通过使用指针而不是值等来重构代码以使头文件变得不必要),但我相信我从事的许多项目都有明显不需要的#include 语句。这通常是通过重构代码并移动它来实现的,但随后忘记删除#include。
有人知道这样的工具是否存在吗?
【问题讨论】:
-
请注意,当您必须为多个配置(平台或构建选项)构建时,问题会变得更加复杂,因为您不想破坏其他构建。另一件事是,您自动最小化依赖关系的目标可能会干扰另一个目标:保持每个包含文件自给自足。
-
构建框是 x86_64,具有 8Gb+ 的 RAM,具有您可以获得的最大 L1/L2 缓存的快速多核 CPU,将是构建时间优化的强力但快速且廉价的方法问题。可以从拥有大量代码库的个人经验中看出这一点 :-) 此外,这只是第一次构建需要花费大量时间 - 如果您正在进行增量更改,您应该只需要重新编译很少的模块,因此值得研究这个问题也从另一个角度。
标签: c++ c optimization include