[MSVC]HOWTO - Verwendung von vorkompilierten Headern
-
Einleitung
Jeder, der einmal an einem großen Projekt gearbeitet hat, kennt das:
Die Kompilierzeit steigt und steigt. Und das liegt nicht zuletzt an der mitsteigenden Anzahl der Headerdateien die eingebunden werden müssen. Und viele dieser Dateien wiederholen sich auch, da sie für jede .c/.cpp Datei extra benötigt werden.
Diese Zeit kann man unter VC++ (und auch anderen Compilern) drastisch senken. Mit vorkompilierten Headern.Setup
Erstmal brauchen wir 2 Dateien: stdafx.h und stdafx.cpp. Diese werden zwar standardmäßig erstellt, viele verwenden aber oft leere Projekte. Diese Dateien können btw heissen wie Ihr wollt, der MSVC verwendet diese Namen nur eben als Standard.
Sollten sie nicht im Projekt bestehen, erstellt sie und fügt sie hinzu.Die Einstellungen
Macht nun folgendes:
Eigenschaften des Projekts -> C/C++ -> Vorkompilierte Header.
Dort wählt Ihr in der oberen Spalte "Vorkompilierte Header verwenden".
In der nächsten Spalte schreibt Ihr rein: stdafx.h
Dann auf ok klicken.Jetzt wählt Ihr die Datei stdafx.cpp. Auch dort
Eigenschaften -> C/C++ -> Vorkompilierte Header
Dort ändert Ihr nun die erste Spalte auf "Vorkompilierte Header erstellen".
Sonst lasst Ihr alles gleich.Inhalt der Dateien
stdafx.h
Hier schreibt ihr alle Header rein, die Ihr verwendet. Allerdings empfehle ich, nur konstante Header zu verwenden, also eben jene aus der STL oder anderen API. Ansonsten wird das Projekt zu oft neu kompiliert, was den SpeedBonus wieder zunichte macht. Den include-guard natürlich nicht vergessen.
stdafx.cpp
In diese Datei schreibt Ihr nur
#include "stdafx.h"
rein. Sonst nichts.
In die restlichen .cpp Dateien eures Projekts muss jetzt als erstes include die stdafx.h rein, damit das richtig funktioniert. Das kann bei einem größeren Projekt etwas Arbeit werden, aber es lohnt sich.
Fazit
Wie man sehen kann, ist das ziemlich einfach. Aber es ist gleichzeitig auch ziemlich mächtig. So konnte ich die BuildZeit bei meinem aktuellen Projekt mit 13.000 Zeilen Code (ohne Kommentare) und knapp 105 .cpp Dateien von 1 Minute 20 auf 10 Sekunden drücken, wenn der vork. Header gebaut ist.
Ich hab das hier mal zusammengefasst, in der Hoffnung, dass es jemand was nutzt. Bei Fragen/Kritik immer los ;).
rya.