CMake日志文件仅在某些文件中缺少“已用时间”

时间:2017-10-15 14:15:45

标签: visual-studio cmake logfile elapsedtime

在我工作的非常复杂的项目中,我正在尝试添加一个后期构建的python脚本来分析日志文件,这些脚本寻求:

1> Build started DATE TIME
1> Elapsed time XXXXXX

显示在visual studio的构建输出窗口中。 当我分析编译器生成的所有日志文件时,我发现只有一些日志包含这样的文本。我尝试了所有不同的详细程度,但仍然相同。只有约50%的日志包含“已用时间”信息。 当我查看输出窗口时,对于一个目标,例如:

20>Build started 2017-10-15 15:17:10.
20>     1>
20>InitializeBuildStatus:
20>         Creating "XXX.dir\Release_D\XXX.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
20>       CustomBuild:
20>         All outputs are up-to-date.
20>       ClCompile:
20>         All outputs are up-to-date.
20>       ResourceCompile:
20>         All outputs are up-to-date.
20>       Link:
20>         XXX.vcxproj -> C:\Work\XXX\XXX_RD.exe
20>         XXX.vcxproj -> C:/Work/XXX/XXX_RD.pdb (Full PDB)
20>       FinalizeBuildStatus:
20>         Deleting file "XXX.dir\Release_D\XXX.tlog\unsuccessfulbuild".
20>         Touching "XXX.dir\Release_D\XXX.tlog\XXX.lastbuildstate".
20>
20>Build succeeded.
20>
20>Time Elapsed 00:00:01.98

(由于原因,项目名称已重命名为XXX) 但是当我检查文件时:OUTPUT / source / XXX.dir / Release_D / XXX.log它只说:

XXX.vcxproj -> C:\Work\XXX\XXX_RD.exe
XXX.vcxproj -> C:/Work/XXX/XXX_RD.pdb (Full PDB)

仅记录了链接部分。 但是当我分析来自先前依赖目标的另一个日志时,在visual studio输出窗口和日志文件中它都是这样说的:

Build started 2017-10-15 15:16:19.
Project "C:\Work\XXX\OUTPUT\YYY_output\Release_D\build\YYY\src\YYY-build\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "C:\Work\XXX\OUTPUT\YYY_output\Release_D\build\YYY\src\YYY-build\ALL_BUILD.vcxproj" (1) is building "C:\Work\XXX\OUTPUT\YYY_output\Release_D\build\YYY\src\YYY-build\ZERO_CHECK.vcxproj" (2) on node 1 (default targets).
InitializeBuildStatus:
  Creating "Win32\Release_D\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  All outputs are up-to-date.

... LOTS OF BUILD OUTPUT HERE

FinalizeBuildStatus:
  Deleting file "Win32\Release_D\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild".
Touching "Win32\Release_D\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate".
Done Building Project         "C:\Work\XXX\OUTPUT\YYY_output\Release_D\build\YYY\src\YYY-build\ALL_BUILD.vcxproj" (default targets).

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.99

是什么让这些日志如此不同? 如何强制编译器(ev.cmake正确设置环境)以便所有日志中包含相同数量的数据?

我需要它,所以我可以分析每个开发人员浪费多少时间等待编译完成(平均每天/每周)。 该项目是多平台的,但我只对windows版本感兴趣。我发现msbuild.exe可能会带有/ filelogger属性,我可以在其中指定输出文件,但我无法弄清楚如何告诉cmake将该属性传递给msbuild。不幸的是,我不是cmake的主人,经过2天的连续谷歌搜索,我已经走到了尽头。 我甚至尝试过使用

cmake -E time cmake .. -G"Visual Studio 14"

但我有一个错误:

The system cannot find the file specified
Elapsed time: 0 s. (time), 0 s. (clock)

然而,即使我解决了错误,它也不是我想要的,因为它是设置环境和解决方案的经过时间,而不是编译本身。 请指教。

0 个答案:

没有答案