我使用CMake生成一些makefile,这些makefile将在Linux上使用g++编译多个目标。我想创建一些关于编译的指标,例如:
- 构建每个目标所需的时间
- g++警告和错误
到目前为止,我想到的唯一解决方案是重定向make的输出并解析整个文件,但这似乎真的很繁重。我不能使用g++标志-fdiagnostics-format=json
功能,因为我不能升级到GCC-9。
有什么建议吗?非常感谢
就时间而言,可以考虑使用Ninja而不是Make。构建时生成一个名为${CMAKE_BINARY_DIR}/.ninja_log
可以转换的文件格式兼容Chrome的about:tracing
火焰图像格式。
这里有一个脚本:https://github.com/nico/ninjatracing
你可以将编译器设置为一个程序或shell脚本,用于包装g++功能,并添加一些(类似于某些缓存集成的工作方式):
# Makefile
CC := g++-with-metrics.sh
# g++-with-metric.sh
# 1. Start timer
# 2. Run command, save output (to variable or tmpfile)
# 3. Stop timer, log result
# 4. Parse output for warnings and errors, log result