6

每次我在 Visual Studio 2010 中构建我的 Visual C++ 解决方案时,整个项目(而不是整个解决方案)都会重新编译。

必须在某处有一个标志或配置才能使 VS 仅编译更改的文件 + 依赖文件。它在哪里?

更新:

  • 我将“Yes (/Gm)”设置为我的项目的配置属性\C/C++\Code Generation\Enable Minimal Rebuild。它仍然在 F7 上编译所有项目的文件。
4

5 回答 5

6

如果您还收到类似于以下内容的消息:

创建“.\Release\SomeLib.unsuccessfulbuild”,因为指定了“AlwaysCreate”。

构建时,原因可能是您的一个项目引用了磁盘上不存在的头文件(请参见此处此处)。

第一个链接还包括一个小 C# 脚本来检查这种情况。要修复,只需从项目中删除对不存在的头文件的引用。

更新

您可能在“创建”上设置了预编译头文件。要修复,请在解决方案浏览器中右键单击您的项目并选择:属性 -> C/C++ -> Precompiled Headers -> Precompiled Header。将设置从Create更改为UseNot Using Precompiled Headers

于 2011-01-20T10:17:09.127 回答
3

默认情况下,VS 的行为应该像您希望的那样;听起来有些事情正在发生。清理项目,并删除您的设置文件(例如.suo / vcproj. .user / 等)。造成这种情况的原因有很多,我见过的其中一些原因是:

  • 损坏的设置文件
  • 系统日期/时间/时区更改混淆 vc
  • 源文件的权限问题
于 2010-12-21T20:44:27.863 回答
2

tul 的帖子对我们来说是推动的,因为我们也有一些项目,总是重新编译。结果我发现:

  • 是的,选项“最小重建”在我们的视觉 2010 项目中以某种方式损坏。我想,这可能发生在他们从视觉 2005 转变而来的时候。
  • 在特定项目中“腐败”的标志是分配了此选项,即它是粗体。这可能仅适用于某些配置,例如 Release,或者适用于某些体系结构,例如 x64。它可能是粗体“否”,但仍会重新编译。

FIX 与接下来的步骤一样简单:

  • 在解决方案中选择一个甚至几个项目
  • 右键单击项目-> 属性
  • 选择配置:“所有配置”
  • 选择平台:“所有平台”(如果您同时拥有 x32/x64)
  • 展开 C++ 组
  • 转到“代码生成”
  • 注意选项“启用最小重建”——很可能它将为空,因为不同的项目/配置具有不同的值
  • 将此选项设置为 NO
  • 单击按钮应用
  • 再次将此选项设置为“从父级继承”
  • 单击按钮应用。否,您应该看到此选项变为“否”,但以纯文本形式显示。

完毕。甚至不需要重新编译。下一个构建将更快。

于 2013-08-17T05:17:15.993 回答
1

我遇到了同样的问题,除了我的无故开始,没有我进行任何项目配置更改。

我会编辑一个文件,点击构建,它会重建整个项目。

经过大量艰苦的实验,我发现关闭“最小重建”可以解决问题。关闭它,我可以再次更改一个文件,它只会编译那个文件。

奇怪的是,一旦我成功构建了一个禁用最少重建的构建,我可以重新打开它,一切都恢复正常。

让我认为某处的某些缓存文件可能已损坏?我曾尝试过删除我所有的中间目录而不高兴,所以如果它是一个损坏的文件,我认为它不在我的项目目录中的任何地方。

希望这可以帮助。

于 2012-01-20T12:29:50.137 回答
0

所以,我在我们的一个项目中遇到了同样的问题。首先,我可以通过选择来调试编译器输出:

-> 工具 -> 选项 -> 项目和解决方案 -> 构建和运行 -> MSBuild 项目构建输出详细程度 -> 详细。

事实证明,有人将项目设置为始终为所有文件 (/Yc) 创建预编译头文件。我更改了下面列出的选项。

-> 配置属性 -> 预编译头文件 -> 使用 (/Yu)

然后我将 stdafx.cpp 的相同选项设置为 (/Yc)。因此,stdafx.cpp 的编译会创建预编译的头文件,而所有其他 .cpp 文件都使用预编译的头文件。这是默认方案,我不确定它是如何为 out 项目更改的。

此外,我已更改所有编译器设置以在所有项目中保持一致,包括:

1) 设置:C/C++ -> Precompiled Headers -> Precompiled Header -> Use (/Yu) 开关:/Yu 原因:更快的构建时间。

2) 设置:C/C++ -> General -> Debug Information Format -> Program Database for Edit and Continue 开关:/ZI
原因:启用edit-and-continue,从而提高调试能力。

3) 设置:C/C++ -> 代码生成 -> 启用最小重建 -> 是 开关:/Gm 原因:允许并加速增量构建,这是 /ZI 所必需的。

希望有帮助。我花了很多时间弄乱我们的项目构建设置并阅读 Stack Overflow 上的帖子,最后,我想念 C#。

于 2013-11-12T17:15:13.000 回答