我有一个快速发展且经常变化的CMake C ++项目。我正在努力将编译时间减少到最低限度。
通常,当我重建项目时,尤其是在更改标题之后,我很惊讶需要重新编译多少个编译单元。我正在尝试识别可能可以避免的#include
,例如通过使用预先声明或不在标题中内联简单函数。
有没有办法从CMake本身,从生成的Makefile中找到,或直接从文件本身找出哪些单位取决于哪些标题?
列表会很好,视觉图形(graphviz?)甚至更好。谷歌对我没有任何帮助。 CMake具有--graphviz
选项,但它在目标上运行,而不是在单个编译单元上运行。
首选跨平台(即使用CMake)是首选,但我也会满足于Linux。
答案 0 :(得分:9)
当我使用基于gcc的工具链时,我发现cmake2.8(运行make之后)生成的依赖关系信息存在于depend.make
和depend.internal
文件中。使用VS似乎不会生成这样的文件(但这似乎不是一个问题)。这些文件也是cmake内部,所以使用它们需要您自担风险。