2017-09-02 48 views
0

如果以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中結果應該是一樣的。

+0

也許[此MS文檔](https://docs.microsoft.com/en-us/cpp/build/reference/pgd-specify-database-for-profile-guided-optimizations)文章可以有所幫助。 – Ron

+0

它或多或少地證實了我所說的話。 '使用/ LTCG:PGINSTRUMENT時,使用/ PGD指定.pgd文件的非默認名稱或位置.' – Belloc

+1

此選項* always *有一個值,默認值爲$(OutDir)$(TargetName).pgd。製作你展示的路徑。很少需要更改設置。目前還不清楚爲什麼你不喜歡默認設置。 –

回答

0

每個Visual Studio項目都有默認設置的/PGD選項,默認路徑爲$(OutDir)$(TargetName).pgd。除非您使用/LTCG:PG*選項明確啓用PGO,否則此設置無效。

相關問題