当我仅使用链接器选项/ LTCG时,为什么Visual Studio在链接器命令行中显示选项/ PGD?

时间:2017-09-02 14:07:51

标签: c++ visual-studio linker

如果您在Release模式下构建一个仅包含.cpp int main() {}文件的项目,则会在Configuration Properties > Linker > Command Line中看到选项/PGD:"C:\Users\*****\Documents\Visual Studio\Projects\solution name\Release\project name.pgd",如果链接器应为此项目的配置文件引导优化创建数据库文件。

但这显然是的情况,因为发布版本中链接器使用的/LTCG选项只是/LTCG而不是/LTCG:PGINSTRUMENT。为了证实这一点,可以检查上面提到的.pgd目录中是否缺少任何Release文件。

为什么Visual Studio在项目的命令行中有这个选项(/ PGD)?

P.S。我正在使用VS2017进行此模拟,但我相信在以前版本的Visual Studio中结果应该是相同的。

1 个答案:

答案 0 :(得分:0)

默认情况下,每个Visual Studio项目都设置了/PGD选项,默认路径为$(OutDir)$(TargetName).pgd。除非您使用/LTCG:PG*选项明确启用PGO,否则此设置无效。