在 Visual Studio Community 2015 中,Visual C++ 项目在其 Release 文件夹中生成一个 *.ipdb 文件和一个 *.iobj 文件。
现在在 Visual Studio Community 2013 中,我从未见过在项目 Release 文件夹中生成这些文件,所以我想知道 -
是否可以停止生成它们?
在 Visual Studio Community 2015 中,Visual C++ 项目在其 Release 文件夹中生成一个 *.ipdb 文件和一个 *.iobj 文件。
现在在 Visual Studio Community 2013 中,我从未见过在项目 Release 文件夹中生成这些文件,所以我想知道 -
是否可以停止生成它们?
这些文件是在启用增量链接时间代码生成 (LTCG) 时生成的。这是 Visual C++ 2015 中的一项新功能。
如果禁用增量 LTCG,链接器将停止生成这些文件。但是,您将失去增量 LTCG 的好处。
要禁用增量 LTCG,请修改您的项目属性:在链接器 => 优化下,将“链接时间代码生成”更改为“使用快速链接时间代码生成 (/LTCG:incremental)”以外的内容(这是发布版本的默认设置)。
您不需要禁用增量链接。由于 VS 2015 在 Linker/Optimization for Release 构建下的默认设置是“Fast Link Time Code Generation”(/LTCG:incremental)。您只需将其更改为“链接时间代码生成”(/LTCG),您将拥有增量链接,VS 将停止生成 *.iobj 和 *ipdb 文件。
我相信它可以让您更快地生成项目,当它在控制台中打印这种消息时:
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 生成占用了很大一部分编译时间。您可以将其视为我相信的“预编译源”。
Visual Studio 2019 版本16.7 16.9 应根据此处的错误报告和讨论修复此行为:Intermediate ilk, iobj and ipdb files end up in $(OutDir) 而不是 $(IntDir)