Visual Studio - 如何避免在每次构建时编译所有项目文件?

时间:2010-12-21 20:38:52

标签: visual-studio conditional-compilation

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

必须有一个标志或配置,以使VS只编译已更改的文件+依赖文件。它在哪里?

更新

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

5 个答案:

答案 0 :(得分:4)

如果另外收到类似的消息:

  

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

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

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

<强>更新

您可能在“创建”上设置了预编译标题设置。要进行修复,请在解决方案浏览器中右键单击您的项目,然后选择: properties - &gt; C / C ++ - &gt;预编译标题 - &gt;预编译标题。将设置从创建更改为使用不使用预编译标题

答案 1 :(得分:3)

默认情况下,VS的行为应该与您希望的一样;听起来有些东西是片状的。清理项目,并删除您的设置文件(例如 .suo / vcproj。 .user / etc)。这有几个原因,其中一些我见过:

  • 损坏的设置文件
  • 系统日期/时间/时区更改令人困惑vc
  • 源文件的权限问题

答案 2 :(得分:1)

我有同样的问题,除非我没有理由地开始,没有我进行任何项目配置更改。

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

经过多次艰苦的实验,我发现关闭'Minimal Rebuild'让问题消失了。有了这个,我可以再次更改一个文件,它只会编译那个文件。

奇怪的是,一旦我成功完成了最小化重建的构建,我可以将其重新打开,一切都恢复正常。

让我觉得某个地方的某些缓存文件可能已经损坏了?我曾尝试删除所有中间目录,但是如果它是一个损坏的文件,我认为它不在我的项目目录中。

希望这有帮助。

答案 3 :(得分:1)

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

  • 是的,选项'Minimal Rebuild'在我们的visual 2010项目中以某种方式被破坏了。我想,当它们从visual 2005转变时可能会发生这种情况。
  • 特定项目中“腐败”的标志是该选项已分配,即以粗体显示。这可能仅适用于某些配置,例如发布,或某些架构,例如64。它可能是粗体“NO”,但仍然可以重新编译。

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

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

DONE。甚至无需重新编译。下一个版本会更快。

答案 4 :(得分:0)

所以,我的一个项目遇到了同样的问题。首先,我可以通过选择:

来调试编译器输出

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

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

- &GT;配置属性 - &gt;预编译标题 - &gt;使用(/ Yu)

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

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

1)设置:C / C ++ - &gt;预编译标题 - &gt;预编译标题 - &gt;使用(/ Yu)    开关:/ Yu    原因:更快的构建时间。

2)设置:C / C ++ - &gt;一般 - &gt;调试信息格式 - &gt;用于编辑和继续的程序数据库    开关:/ ZI
   原因:启用编辑并继续,从而提高调试功能。

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

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