当我仅使用链接器选项/ LTCG时,为什么Visual Studio在链接器命令行中显示选项/ PGD?
问题描述:
如果以Release
模式构建项目,只包含.cpp
文件和int main() {}
,您会在Configuration Properties > Linker > Command Line
中看到/PGD:"C:\Users\*****\Documents\Visual Studio\Projects\solution name\Release\project name.pgd"
选项,就好像链接器应该为该项目的分析引导优化创建数据库文件一样。当我仅使用链接器选项/ LTCG时,为什么Visual Studio在链接器命令行中显示选项/ PGD?
但是,这显然是不的的情况下,作为一个发布版本所使用的连接器的/LTCG
选项只是/LTCG
而不是/LTCG:PGINSTRUMENT
。为了证实这一点,可以检查上述Release
目录中是否存在任何.pgd
文件。
为什么Visual Studio在项目的命令行中有这个选项(/ PGD)?
P.S.我正在使用VS2017进行这种模拟,但我相信在以前版本的Visual Studio中结果应该是一样的。
也许[此MS文档](https://docs.microsoft.com/en-us/cpp/build/reference/pgd-specify-database-for-profile-guided-optimizations)文章可以有所帮助。 – Ron
它或多或少地证实了我所说的话。 '使用/ LTCG:PGINSTRUMENT时,使用/ PGD指定.pgd文件的非默认名称或位置.' – Belloc
此选项* always *有一个值,默认值为$(OutDir)$(TargetName).pgd。制作你展示的路径。很少需要更改设置。目前还不清楚为什么你不喜欢默认设置。 –