Visual Studio 2012始终编译所有源代码文件

时间:2013-02-09 14:53:06

标签: c++ visual-studio-2012

我正在使用Visual Studio 2012,如果我更改一个.cpp源文件,Visual Studio 2012将始终编译所有源代码文件。

我该如何解决这个问题? 感谢

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

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