如果以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。製作你展示的路徑。很少需要更改設置。目前還不清楚爲什麼你不喜歡默認設置。 –