2017-09-02 1 views
0

Wenn Sie ein Projekt im Release-Modus mit nur einer .cpp Datei mit int main() {} erstellen, sehen Sie unter Configuration Properties > Linker > Command Line die Option /PGD:"C:\Users\*****\Documents\Visual Studio\Projects\solution name\Release\project name.pgd", als ob der Linker eine Datenbankdatei für eine profilgeführte Optimierung für dieses Projekt erstellen soll.Warum zeigt Visual Studio die Option/PGD in der Linker-Befehlszeile, wenn ich nur die Linker-Option/LTCG verwende?

Aber das ist eindeutig nicht der Fall, da die /LTCG Option durch den Linker in einem Release-Build verwendet wird, ist nur /LTCG und nicht /LTCG:PGINSTRUMENT. Um dies zu bestätigen, kann man das Fehlen einer beliebigen .pgd Datei im Verzeichnis Release überprüfen, das oben erwähnt ist.

Warum hat Visual Studio diese Option (/ PGD) in der Befehlszeile des Projekts?

P.S. Ich verwende VS2017 für diese Simulation, aber ich glaube, dass das Ergebnis in früheren Versionen von Visual Studio identisch sein sollte.

+0

Vielleicht kann [Artikel dieser MS-Dokumentation] (https://docs.microsoft.com/en-us/cpp/build/reference/pgd-specify-database-for-profile-guided-optimizations) hilfreich sein. – Ron

+0

Es bestätigt mehr oder weniger, was ich gesagt habe. 'Wenn Sie/LTCG: PGINSTRUMENT verwenden, verwenden Sie/PGD, um einen nicht standardmäßigen Namen oder Speicherort für die .pgd-Datei anzugeben. – Belloc

+1

Diese Option * always * hat einen Wert, der Standardwert ist $ (OutDir) $ (TargetName) .pgd. Produzieren des Pfades, den du gezeigt hast. Das Ändern der Einstellung ist selten erforderlich. Es ist nicht klar, warum Sie den Standard nicht mögen. –

Antwort

0

Für jedes Visual Studio-Projekt ist die Option /PGD standardmäßig mit einem Standardpfad von $(OutDir)$(TargetName).pgd festgelegt. Diese Einstellung hat keine Auswirkungen, es sei denn, Sie aktivieren PGO explizit mit den Optionen /LTCG:PG*.

Verwandte Themen