我正在使用 Visual Studio 2012,如果我更改了一个 .cpp 源文件,Visual Studio 2012 总是会编译所有源代码文件。
我怎样才能解决这个问题?谢谢
我正在使用 Visual Studio 2012,如果我更改了一个 .cpp 源文件,Visual Studio 2012 总是会编译所有源代码文件。
我怎样才能解决这个问题?谢谢
我自己想通了。我正在为我的项目文件使用带有 Paragon (10) Windows 驱动程序的 HFS+ 驱动器。在那里,Visual Studio 总是编译所有源文件。然后我把它移到 NTFS 驱动器上,现在一切都很好。它只编译更改的源文件。
以我的经验,这通常意味着您的项目有一个已添加的 .h 文件,但该文件不再存在于磁盘上。VS(真的是msbuild)认为该文件是一个生成的文件,并且由于它不存在,因此需要进行重建以便生成标头。
要找出是否是这个问题,请查看 VS 解决方案资源管理器中的头文件文件夹,并验证列出的每个文件确实存在于磁盘上。有时 VS 会用不同的图标显示丢失的文件。如果确实不再需要该文件,则应将其从项目中删除。
另一个可能的原因是错误的 .tlog 文件。这些是 msbuild 在构建期间创建的文件,用于跟踪构建的输入(有助于检测 .rc 中列出的 .ico 文件等内容,但未明确添加为项目中的文件)。如果您在 VS 之外使用源代码控制和同步,有时依赖文件会被愚弄以为找不到依赖项,并再次假定它是生成的文件。此处的修复是递归删除项目目录下的所有 tlog 文件(例如: del /s *.tlog )。这些文件会重新生成,因此删除它们是完全安全的。
我也遇到过这个问题。经过一番研究,我发现 /MP 被配置了两次:一方面在 C/C++ General-Tab 中,选项“多处理器编译”设置为“是 (/MP)”,另一方面作为附加选项命令行部分。附加选项激活了“从父级或项目默认值继承”并用 /MP 填充。
删除附加选项中的冗余条目 /MP 为我解决了这个问题。
只需使用Ctrl+F7
快捷方式。这将仅编译该文件,因此要观察更改,您需要将目标文件重新链接在一起(该项目的完整构建)。
我正在使用 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 错误!