在我工作的非常复杂的项目中,我正在尝试添加一个后期构建的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)
然而,即使我解决了错误,它也不是我想要的,因为它是设置环境和解决方案的经过时间,而不是编译本身。 请指教。