1

我正在使用 Visual Studio 2012,如果我更改了一个 .cpp 源文件,Visual Studio 2012 总是会编译所有源代码文件。

我怎样才能解决这个问题?谢谢

4

5 回答 5

3

我自己想通了。我正在为我的项目文件使用带有 Paragon (10) Windows 驱动程序的 HFS+ 驱动器。在那里,Visual Studio 总是编译所有源文件。然后我把它移到 NTFS 驱动器上,现在一切都很好。它只编译更改的源文件。

于 2013-02-09T16:50:51.423 回答
2

以我的经验,这通常意味着您的项目有一个已添加的 .h 文件,但该文件不再存在于磁盘上。VS(真的是msbuild)认为该文件是一个生成的文件,并且由于它不存在,因此需要进行重建以便生成标头。

要找出是否是这个问题,请查看 VS 解决方案资源管理器中的头文件文件夹,并验证列出的每个文件确实存在于磁盘上。有时 VS 会用不同的图标显示丢失的文件。如果确实不再需要该文件,则应将其从项目中删除。

另一个可能的原因是错误的 .tlog 文件。这些是 msbuild 在构建期间创建的文件,用于跟踪构建的输入(有助于检测 .rc 中列出的 .ico 文件等内容,但未明确添加为项目中的文件)。如果您在 VS 之外使用源代码控制和同步,有时依赖文件会被愚弄以为找不到依赖项,并再次假定它是生成的文件。此处的修复是递归删除项目目录下的所有 tlog 文件(例如: del /s *.tlog )。这些文件会重新生成,因此删除它们是完全安全的。

于 2013-02-09T15:08:16.237 回答
1

我也遇到过这个问题。经过一番研究,我发现 /MP 被配置了两次:一方面在 C/C++ General-Tab 中,选项“多处理器编译”设置为“是 (/MP)”,另一方面作为附加选项命令行部分。附加选项激活了“从父级或项目默认值继承”并用 /MP 填充。

删除附加选项中的冗余条目 /MP 为我解决了这个问题。

于 2014-01-28T07:59:01.310 回答
0

只需使用Ctrl+F7快捷方式。这将仅编译该文件,因此要观察更改,您需要将目标文件重新链接在一起(该项目的完整构建)。

于 2013-02-09T15:02:07.453 回答
-1

我正在使用 MS Visual Studio 2012 并看到 IDE 坚持编译 stdafx.cpp(#included "stdafx.h"),即使我命令它编译一个完全不同的单个 .cpp 文件。我确保我有“不使用预编译头文件”以确保编译不会尝试使用 stdafx.cpp 和 stdafx.h 构建 stdafx.pch。IDE 仍然坚持在编译我的其他单个 .cpp 文件之前构建 stdafx.cpp。只是为了它,我删除了我的 stdafx.cpp 文件,并且有效。现在,当我使用“Build:Compile”命令时,只会编译我的单个 .cpp 文件!这对我来说听起来像是一个 IDE 错误!

于 2013-10-26T00:08:52.917 回答