每次我在 Visual Studio 2010 中构建我的 Visual C++ 解决方案时,整个项目(而不是整个解决方案)都会重新编译。
必须在某处有一个标志或配置才能使 VS 仅编译更改的文件 + 依赖文件。它在哪里?
更新:
- 我将“Yes (/Gm)”设置为我的项目的配置属性\C/C++\Code Generation\Enable Minimal Rebuild。它仍然在 F7 上编译所有项目的文件。
每次我在 Visual Studio 2010 中构建我的 Visual C++ 解决方案时,整个项目(而不是整个解决方案)都会重新编译。
必须在某处有一个标志或配置才能使 VS 仅编译更改的文件 + 依赖文件。它在哪里?
更新:
如果您还收到类似于以下内容的消息:
创建“.\Release\SomeLib.unsuccessfulbuild”,因为指定了“AlwaysCreate”。
构建时,原因可能是您的一个项目引用了磁盘上不存在的头文件(请参见此处和此处)。
第一个链接还包括一个小 C# 脚本来检查这种情况。要修复,只需从项目中删除对不存在的头文件的引用。
更新
您可能在“创建”上设置了预编译头文件。要修复,请在解决方案浏览器中右键单击您的项目并选择:属性 -> C/C++ -> Precompiled Headers -> Precompiled Header。将设置从Create更改为Use或Not Using Precompiled Headers。
默认情况下,VS 的行为应该像您希望的那样;听起来有些事情正在发生。清理项目,并删除您的设置文件(例如.suo / vcproj. .user / 等)。造成这种情况的原因有很多,我见过的其中一些原因是:
tul 的帖子对我们来说是推动的,因为我们也有一些项目,总是重新编译。结果我发现:
FIX 与接下来的步骤一样简单:
完毕。甚至不需要重新编译。下一个构建将更快。
我遇到了同样的问题,除了我的无故开始,没有我进行任何项目配置更改。
我会编辑一个文件,点击构建,它会重建整个项目。
经过大量艰苦的实验,我发现关闭“最小重建”可以解决问题。关闭它,我可以再次更改一个文件,它只会编译那个文件。
奇怪的是,一旦我成功构建了一个禁用最少重建的构建,我可以重新打开它,一切都恢复正常。
让我认为某处的某些缓存文件可能已损坏?我曾尝试过删除我所有的中间目录而不高兴,所以如果它是一个损坏的文件,我认为它不在我的项目目录中的任何地方。
希望这可以帮助。
所以,我在我们的一个项目中遇到了同样的问题。首先,我可以通过选择来调试编译器输出:
-> 工具 -> 选项 -> 项目和解决方案 -> 构建和运行 -> 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#。