为什么某些C ++项目构建显示00:00:00经过的时间而没有输出窗口详细信息?

时间:2011-08-18 22:23:37

标签: visual-studio-2010 cmake

我们有一个160+项目的VS2010 C ++解决方案。我从一个完全空的输出目录和“Build Solution”开始。我将IDE构建详细程度设置为Normal。在构建期间,我观察输出窗口。 (VS2010设置为一次构建2个项目,每次只编译1个.cpp文件。)

大多数项目显示编译器(每个.cpp文件名)和库管理器/链接器的大量输出行。

但是-some-项目(最近一次运行中的10个)显示出非常小的输出。例如:

29>------ Build started: Project: DebuggingService (LHFramework\DebuggingService\DebuggingService), Configuration: Debug x64 ------
29>Build started 8/17/2011 3:23:24 PM.
29>
29>Build succeeded.
29>
29>Time Elapsed 00:00:00

显示这些症状的项目未被禁用,它们有许多.cpp文件,以及相应的结果文件(.obj,.lib,.exe等) - 由此版本生成。

当我清空构建输出目录并从头开始重新运行构建时,一组不同的项目可能会显示这些症状!

似乎那些项目构建=正在发生(显然超过00:00:00),但跳过了“输出”窗口中的显示。我不知道任何影响构建输出的项目设置:我认为它只受IDE级别设置的控制。在任何情况下,我们对所有项目使用相同的设置,因此它们都应显示相同级别的输出细节。

.log文件只包含上面输出的最后五行,减去前导“29>”指示符。创建了各种.tlog文件:3个来自“cl”,3个来自“custombuild”,3个来自“lib”。我几乎可以弄明白他们的意思。 :)

可能重要注意:我们的.sln / .vcxproj / etc文件由CMake生成。我没有设置,但是所有项目都有一个自定义构建步骤来运行CMake来确定需要完成哪些工作(编译/链接/等)。

所以......这是VS2010的已知问题吗?或者我们偶然发现了一些VS2010< - > CMake交互?

麦克

2 个答案:

答案 0 :(得分:2)

我根本没有听说过这个特殊问题,但请确保您尝试使用最新版本的CMake和Visual Studio 2010.最新的正式版本是从7月初开始的,CMake 2.8.5。而CMake 2.8.6-rc1的第一个候选版本昨天刚刚问世。

早期版本的CMake在使用VS 2010解决方案时遇到了几个已知问题(尽管不是我所知的问题),并且许多问题已在2.8.5中得到修复。有一些非常令人烦恼的自定义构建规则问题需要多次迭代才能完全解决。

给一次CMake 2.8.5或2.8.6-rc1。也许这个问题与已经修复的问题有关......

答案 1 :(得分:1)

在我看来,项目依赖项导致项目不止一次被触发,而在第二次调用时,项目被跳过,因为它不需要重建。时间差异可以解释为什么每次都会看到具有此行为的不同项目。

在日志中,项目的先前实例是否显示00:00:00已用时间?这将是以前是否建成的良好指标。

您还可以转到工具>在Visual Studio中打开MSBuild详细程度。选项>项目和解决方案>构建并运行。将“MSBuild项目构建日志文件详细程度”设置为“详细”或“诊断”,并查看日志中是否有更多有趣内容。