【问题标题】:Visual Studio: what is the difference between 'Build Solution' and 'Rebuild Solution' when i do not use precompiled headersVisual Studio:当我不使用预编译头文件时,“构建解决方案”和“重建解决方案”有什么区别
【发布时间】:2022-01-07 10:49:21
【问题描述】:

我试图了解 Visual Studio 中的 2 种内置类型(构建与重建解决方案)之间的区别。正如我所知,当我使用预编译头文件时,只要这些文件中的代码保持不变,简单构建的头文件就不会编译预编译头文件,但“重建”将始终编译它们。 那么当我不使用预编译头文件时会发生什么? 我注意到简单构建仍然比重建快,究竟是什么来减少编译时间(c++)?

【问题讨论】:

  • 重建通常是“清理和构建”。这就是为什么它总是编译所有 C++ 文件,因为所有目标文件都在“清理阶段”被删除。
  • 预编译的头文件与(incremental)构建和重建(clean and build)无关。

标签: c++ visual-studio compilation visual-studio-2022


【解决方案1】:

使用 Build 通常只会重新构建由于您对代码所做的更改而需要重新构建的文件。

如果您在项目/解决方案中创建两个文件,a.cpp 和 b.cpp,然后第一次 Build,两者都将被编译(成 a.obj 和 b.obj)然后链接到.exe 文件中。

如果您随后仅对 a.cpp 进行更改并再次选择 Build,则只会编译 a.cpp(转换为 a.obj)并且 a.obj 和已经存在的 @987654330 @ 将链接到 .exe 文件中。

如果您改为选择 Rebuild,b.cpp 也会在链接之前重新编译,即使您没有对 b.cpp 进行任何更改。

【讨论】:

  • 现在还有增量链接时间代码生成 (/LCG:INCREMENTAL),除了 .obj 文件之外,它还添加了一个 .ipdb 文件。效果还是一样的;正常的构建是增量构建,而重建是从头开始的完整构建。
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 2010-09-07
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多