如何从 CMake 或 make 输出编译依赖项?
Posted
技术标签:
【中文标题】如何从 CMake 或 make 输出编译依赖项?【英文标题】:How to output compilation dependencies from CMake or make? 【发布时间】:2011-03-13 05:37:08 【问题描述】:我有一个 CMake C++ 项目,该项目正在快速增长并且经常发生变化。我正在尝试将编译时间减少到最低限度。
通常,当我重建项目时,尤其是在头文件更改后,我会惊讶于需要重新编译多少编译单元。我正在尝试识别可以避免的#include
s,例如通过使用预先声明或不在标头中内联琐碎的函数。
有什么方法可以从 CMake 本身、从生成的 Makefile 或直接从文件本身找出哪些单元取决于哪些标头?
列表会更好,可视化图表(graphviz?)甚至更好。谷歌对我来说一无所获。 CMake 有 --graphviz
选项,但它在目标上运行,而不是在单个编译单元上运行。
首选跨平台(即仅使用 CMake),但我也会满足于仅 Linux。
【问题讨论】:
【参考方案1】:当我使用基于 gcc 的工具链时,我发现 cmake2.8(运行 make 后)生成的依赖信息位于 depend.make
和 depend.internal
文件中。使用 VS 似乎不会生成此类文件(但这对您来说似乎不是问题)。此外,这些文件是 cmake 内部文件,因此使用它们需要您自担风险。
【讨论】:
这只是传递闭包(即包括间接依赖),但它很有帮助,谢谢!以上是关于如何从 CMake 或 make 输出编译依赖项?的主要内容,如果未能解决你的问题,请参考以下文章