35

在 Visual Studio Community 2015 中,Visual C++ 项目在其 Release 文件夹中生成一个 *.ipdb 文件和一个 *.iobj 文件。

现在在 Visual Studio Community 2013 中,我从未见过在项目 Release 文件夹中生成这些文件,所以我想知道 -

是否可以停止生成它们?

4

4 回答 4

42

这些文件是在启用增量链接时间代码生成 (LTCG) 时生成的。这是 Visual C++ 2015 中的一项新功能。

如果禁用增量 LTCG,链接器将停止生成这些文件。但是,您将失去增量 LTCG 的好处。

要禁用增量 LTCG,请修改您的项目属性:在链接器 => 优化下,将“链接时间代码生成”更改为“使用快速链接时间代码生成 (/LTCG:incremental)”以外的内容(这是发布版本的默认设置)。

于 2015-07-22T14:28:58.300 回答
7

您不需要禁用增量链接。由于 VS 2015 在 Linker/Optimization for Release 构建下的默认设置是“Fast Link Time Code Generation”(/LTCG:incremental)。您只需将其更改为“链接时间代码生成”(/LTCG),您将拥有增量链接,VS 将停止生成 *.iobj 和 *ipdb 文件。

于 2019-05-10T18:52:16.317 回答
2

我相信它可以让您更快地生成项目,当它在控制台中打印这种消息时:

2 of 3 functions (66.7%) were compiled, the rest were copied from previous compilation.
1>    2 functions were new in current compilation
1>    0 functions had inline decision re-evaluated but remain unchanged
1>  Finished generating code

我不认为你可以删除它,但它是一个有用的工具这是因为 PDB 生成占用了很大一部分编译时间。您可以将其视为我相信的“预编译源”。

于 2015-07-22T07:00:10.113 回答
2

Visual Studio 2019 版本16.7 16.9 应根据此处的错误报告和讨论修复此行为:Intermediate ilk, iobj and ipdb files end up in $(OutDir) 而不是 $(IntDir)

于 2020-08-05T20:18:41.827 回答