【发布时间】:2011-05-10 07:06:02
【问题描述】:
我有一个 C++ 项目,我目前正在从 VS2008 移植到 VS2010。当我构建项目时,Visual Studio 2010 报告构建成功,但如果我随后按 F5 启动调试器,我会被告知项目不是最新的。如果我忽略这个警告,我可以继续调试,但如果我按下 ok,整个项目(数百个源文件)将从头开始重建。输出包含以下内容;
1>------ Build started: Project: SCCW-VC2010, Configuration: Debug Win32 ------
1>Build started 15/11/2010 14:47:40.
1>InitializeBuildStatus:
1> Creating "Debug\SCCW-VC2010.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>Midl:
1> All outputs are up-to-date.
1>ClCompile:
1> tinedit.cpp
1> _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
1> Automatically linking with sfl504d.lib
1> Automatically linking with ot1104d.lib
1>c:\program files\rogue wave\stingray studio 10.4\include\toolkit\sectndlg.h(134): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\string.h(105) : see declaration of 'strcpy'
1> Automatically linking with og1204d.lib
1> Automatically linking with RWUXThemeD10.lib
1> profile.cpp
1> ZOffsetDialog.cpp
半小时后,一旦构建完成,调试器就会启动。我的猜测是消息
正在创建“Debug\SCCW-VC2010.unsuccessfulbuild”,因为指定了“AlwaysCreate”。
是问题的一部分,但我无法将其与项目设置联系起来。我找到了some help on google,但到目前为止没有任何效果。有其他人遇到过这个问题并且知道解决方法吗?
编辑:根据 Jalf 在下面 cmets 中的建议,我创建了一个新的投影,将我所有的文件导入到该项目中,并且新项目也存在同样的问题。具体来说,我复制了以下所有组;
<ClCompile Include="..\MyDir\MyFile.cpp"/>
<ClInclude Include="..\MyDir\MyFile.h" />
<None Include="res\MyFile.ico" /> (and all similar resources)
<Library Include="..\MyDir\MyFile.lib" />
Edit2: 在浏览了所有包含的标题后,我最终找到了 3 个不存在的标题。删除它们并在原始项目上进行全部重建似乎已经解决了这个问题。一些提到此问题的博客文章将其称为错误,两天后的浪费时间,我倾向于同意。感谢您提供的答案和 cmets。
Edit3: 一天后问题又回来了!对项目中的任何文件进行任何编辑都会再次导致完全重建。根据 John Dibling 的回答,该项目确实包含一些静态库,包括 Stingray。我正在放弃 VS2010 并回到 VS2008,因为我有最后期限。相关信息见以下链接;
Visual Studio 2010 always thinks project is out of date, but nothing has changed
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/38c08137-3bb0-4143-b97f-72d077646318
最终编辑 VS2010 SP1 的发布解决了这个问题,现在构建快速高效。
【问题讨论】:
-
是否可以简单地重新创建解决方案 + 项目?
-
@jalf,这是一个选项,但在 IDE 中执行此操作很耗时,因为不同位置有很多文件。我可以通过制作一个空白的 vxcproj 并剪切和粘贴我的文件来破解它,但很可能最终把问题交给我。
-
如果你这样做了,我认为你不会有问题。将项目从一个版本的 VS 升级到另一个版本总是会导致它设置各种通常不需要的奇怪设置(有时,如您的情况,甚至会引入错误)。如果您可以创建一个空白项目然后重新添加所有文件,我怀疑它会正常工作。
-
@jalf,根据我上面的编辑创建了一个新项目并导入了所有文件,但没有任何改进。不过值得一试。而且新项目比导入的版本小很多,编译速度也快了一些。
-
很遗憾它没有修复它。但很高兴听到至少有一些改进。确实,每次版本升级都会使项目变得非常混乱。我以前也注意到过类似的差异。
标签: c++ visual-studio-2010 build