构建分析:CMake/ninja 能否为每个编译单元生成编译时间日志?

Ben*_*Ben 6 c++ profiling cmake compilation-time

我正在尝试分析项目的构建时间,以便了解什么花费了最多的时间。这看起来应该很容易......如果我有一切clang在文件中列出了每个命令,我可以对每个命令进行计时并按时间排序以找到花费最长的编译,然后我可以进去看看哪些编译单位感到惊讶并试图找出为什么他们这么慢。

谷歌搜索对此一无所获。显然这是可能的并且很有用。

所以,要么:

  • 基本上执行此操作的选项是什么?

或者

  • 如何让 CMake/ninja 转储所有列表clang它想要运行的所有命令的列表?
  • 或者,也许方法是编写一个脚本来记录命令和所花费的时间,并将其用作CXX_COMPILER_LAUNCHER?

kli*_*kin 3

要获取编译命令列表,请使用compile_commands.json

尝试使用ninjatracing工具获取 Chrome 的 about:tracing 格式的构建配置文件。