Festlegen der Compiler- und Buildeigenschaften

In der IDE machen Eigenschaften die Informationen zugänglich, die zum Erstellen eines Projekts benötigt werden. Zu diesen Informationen zählen unter anderem der Anwendungsname, die Erweiterung (z.B. DLL, LIB, EXE), Compileroptionen, Linkeroptionen, Debuggereinstellungen und benutzerdefinierte Buildschritte. Üblicherweise verwenden Sie die Eigenschaftenseiten, um diese Eigenschaften anzuzeigen und zu ändern. Klicken Sie im Hauptmenü auf Projekt>Projektname Eigenschaften, oder klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie dann Eigenschaften aus, um auf die Eigenschaftenseiten zuzugreifen.

Standardeigenschaften

Wenn Sie ein Projekt erstellen, weist das System verschiedenen Eigenschaften Werte zu. Die Standardwerte variieren in Abhängigkeit von der Art des Projekts und den Optionen, die Sie im App-Assistenten auswählen. Ein ATL-Projekt verfügt beispielsweise über Eigenschaften für MIDL-Dateien. Diese Eigenschaften sind jedoch in einer Basiskonsolenanwendung nicht vorhanden. Die Standardeigenschaften werden im Bereich „Allgemein“ auf den Eigenschaftenseiten angezeigt:

Screenshot des Visual Studio-Projekteigenschaftendialogfelds.

Die Seite „Allgemein“ ist geöffnet. Der Abschnitt „Projectstandards“ ist hervorgehoben. Der Konfigurationstyp ist auf „Anwendung“ (.exe) festgelegt, die Verwendung von MFC auf „Standard-Windows-Bibliotheken verwenden“, der Zeichensatz ist „Unicode“, CLR-Support ist auf „Kein CLR-Support“ festgelegt, Optimierung des gesamten Programms ist auf „Nein“ festgelegt, und die Windows Store App-Unterstützung ist ebenfalls auf „Nein“ festgelegt.

Anwenden von Eigenschaften auf Buildkonfigurationen und Zielplattformen

Einige Eigenschaften (z. B. der Anwendungsname) gelten für alle Buildvarianten und Zielplattformen, egal ob es sich um einen Debug- oder um einen Releasebuild handelt. Die meisten Eigenschaften hängen jedoch von Konfigurationen ab. Um den richtigen Code zu erzeugen, muss der Compiler sowohl die spezifische Plattform kennen, auf der das Programm läuft, als auch die spezifischen Compileroptionen, die er verwenden soll. Wenn Sie also eine Eigenschaft festlegen, sollten Sie deshalb darauf achten, für welche Konfiguration und welche Plattform der neue Wert gelten soll. Soll sie nur für Win32-Debugbuilds oder ebenfalls für ARM64- und x64-Debugbuilds gelten? Die Eigenschaft Optimierung ist in einer Releasekonfiguration beispielsweise standardmäßig auf Geschwindigkeit maximieren (/O2) festgelegt. In einer Debugkonfiguration ist sie jedoch deaktiviert.

Sie können die Konfiguration und die Plattform, für die ein Eigenschaftswert gelten soll, jederzeit einsehen und ändern. Die folgende Abbildung zeigt die Eigenschaftsseiten mit den Steuerelementen für die Konfigurations- und Plattforminformationen im oberen Bereich. Wenn die Eigenschaft Optimierung hier festgelegt ist, gilt sie nur für Win32-Debugbuilds, die derzeit aktive Konfiguration, wie durch die roten Pfeile angezeigt.

Screenshot des Dialogfelds „Eigenschaftenseiten von Visual Studio“.

Die Seite ist für C/C++, Optimierung offen. Die Einstellung „Optimierung“ ist auf „Deaktiviert“ (/Od) festgelegt, was auch angezeigt wird. Ein Pfeil weist auf die Beziehung zwischen der Einstellung Konfiguration auf der Projekteigenschaftsseite, die auf „Aktiv(Debug)“ eingestellt ist, und der Einstellung in der Dropdownliste Konfiguration der Projektmappe in der Symbolleiste, die auf „Debug“ eingestellt ist, hin. Ein weiterer Pfeil verdeutlicht die Beziehung zwischen der Plattformeinstellung auf der Projekteigenschaftsseite, die auf „Aktiv(Win32)“ eingestellt ist, und der Einstellung im Dropdownmenü „Lösungsplattform“ in der Symbolleiste, die auf „x86“ eingestellt ist.

Die folgende Abbildung zeigt dieselbe Eigenschaftenseite des Projekts, allerdings wurde die Konfiguration in „Release“ geändert. Beachten Sie den geänderten Wert der Eigenschaft „Optimierung“. Beachten Sie außerdem, dass die aktive Konfiguration immer noch „Debug“ ist. Sie können hier Eigenschaften für jede Konfiguration festlegen. Diese müssen nicht der aktiven Konfiguration entsprechen.

Screenshot des Dialogfelds „Eigenschaftenseiten“ des Visual Studio-Projekts. Das Dropdownmenü „Konfiguration“ wird angezeigt und ist auf „Release“ eingestellt. Die Einstellung C/C++ > Optimierung > Optimierung ist auf Maximierung der Geschwindigkeit (/O2) festgelegt.

Zielplattformen

Zielplattform bezieht sich auf den Gerätetyp und/oder das Betriebssystem, auf dem die ausführbare Datei ausgeführt wird. Sie können ein Projekt für mehr als eine Plattform erstellen. Die verfügbaren Zielplattformen für C++-Projekte hängen von der Art des Projekts ab. Dazu gehören unter anderem Win32, x64, ARM, ARM64, Android und iOS. Die Zielplattform x86, die im Konfigurations-Manager angezeigt wird, entspricht Win32 in nativen C++-Projekten. Win32 bedeutet 32-Bit-Windows, und x64 bedeutet 64-Bit-Windows. Weitere Informationen zu diesen beiden Plattformen finden Sie unter Ausführung von 32-Bit-Anwendungen.

Der Wert Jede CPU für die Zielplattform, den Sie möglicherweise im Konfigurationsmanager sehen, hat keine Auswirkungen auf native C++-Projekte. Er ist nur für C++/CLI und andere .NET-Projekttypen relevant. Weitere Informationen finden Sie unter /CLRIMAGETYPE (Angeben des Typs des CLR-Images).

Weitere Informationen zum Festlegen von Eigenschaften für einen Debugbuild finden Sie unter:

Optionen für C++-Compiler und Linker

Die Optionen für C++-Compiler und Linker sind unter den Knoten C/C++ und Linker im linken Bereich unter Konfigurationseigenschaften zu finden. Diese werden direkt in Befehlszeilenoptionen übersetzt, die an den Compiler übergeben werden. Wenn Sie die Dokumentation für eine bestimmte Option lesen möchten, klicken Sie im mittleren Bereich auf die Option, und drücken Sie F1. Alternativ können Sie die Dokumentation für alle Optionen unter MSVC-Compileroptionen und MSVC-Linkeroptionen durchsuchen.

Im Dialogfeld Eigenschaftenseiten werden nur die Eigenschaftenseiten angezeigt, die für das aktuelle Projekt relevant sind. Wenn das Projekt beispielsweise keine .idl-Datei enthält, wird die MIDL-Eigenschaftenseite nicht angezeigt. Weitere Informationen zu den Einstellungen auf den einzelnen Eigenschaftenseiten finden Sie unter Referenz zu den Windows-C++-Projekteigenschaftenseiten.

Verzeichnis- und Pfadwerte

MSBuild unterstützt die Verwendung von Kompilierzeitkonstanten (Makros genannt) für bestimmte Zeichenfolgenwerte, die Verzeichnisse und Pfade enthalten. Ein Makro kann auf einen Wert verweisen, der von Visual Studio oder dem MSBuild-System oder einem benutzerdefinierten Wert definiert wird. Makros sehen so aus: $(macro-name) oder %(item-macro-name). Sie werden auf den Eigenschaftenseiten verfügbar gemacht, wo Sie mithilfe des Eigenschaften-Editors auf sie verweisen und sie ändern können. Verwenden Sie Makros anstelle hartcodierter Werte wie Verzeichnispfade. Makros erleichtern das Freigeben von Eigenschafteneinstellungen zwischen Computern und zwischen Versionen von Visual Studio. Außerdem können Sie besser sicherstellen, dass Ihre Projekteinstellungen ordnungsgemäß an der Eigenschaftenvererbung teilnehmen.

Die folgende Abbildung zeigt die Eigenschaftenseiten für ein Visual Studio-C++-Projekt. Im linken Bereich ist die RegelVC++-Verzeichnisse ausgewählt, und im rechten Bereich werden die Eigenschaften aufgeführt, die dieser Regel zugeordnet sind. Die Eigenschaftswerte sind häufig Makros, z. B.$(VC_SourcePath):

Screenshot des Dialogfelds „Eigenschaftenseiten von Visual Studio“ für Regeln für verschiedene Verzeichnisse.

Die Seite VC++-Verzeichnisse, die Eigenschaften für die VC++-Verzeichnisregeln enthält, ist geöffnet. Eine Beispielregel ist Quellverzeichnisse, die auf $(VC_SourcePath) festgelegt sind. Es gibt Regeln für die eingeschlossenen Verzeichnisse, Bibliotheksverzeichnisse, ausführbare Verzeichnisse usw.

Sie können den Eigenschaften-Editor verwenden, um die Werte aller verfügbaren Makros anzuzeigen.

Vordefinierte Makros

  • Globale Makros:
    Globale Makros gelten für alle Elemente in einer Projektkonfiguration. Ein globales Makro weist die Syntax $(name) auf. Ein Beispiel eines globalen Makros ist $(VCInstallDir), das das Stammverzeichnis der Visual Studio-Installation speichert. Ein globales Makro entspricht einer PropertyGroup in MSBuild.

  • Elementmakros:
    Elementmakros weisen die Syntax %(name) auf. Bei einer Datei gilt ein Elementmakro nur für diese Datei – z. B. können Sie %(AdditionalIncludeDirectories) verwenden, um Includeverzeichnisse anzugeben, die nur für eine bestimmte Datei gelten. Diese Art des Elementmakros entspricht den ItemGroup-Metadaten in MSBuild. Wenn ein Elementmakro im Zusammenhang mit einer Projektkonfiguration verwendet wird, gilt es für alle Dateien eines bestimmten Typs. Beispielsweise kann die C/C++-Konfigurationseigenschaft Präprozessordefinitionen ein %(PreprocessorDefinitions)-Elementmakro verwenden, das für alle CPP-Dateien im Projekt gilt. Diese Art des Elementmakros entspricht den ItemDefinitionGroup-Metadaten in MSBuild. Weitere Informationen finden Sie unter Item Definitions (Elementdefinitionen).

benutzerdefinierte Makros

Sie können benutzerdefinierte Makros erstellen, um sie als Variablen in Projektbuilds zu verwenden. Sie können z. B. ein benutzerdefiniertes Makro erstellen, das einen Wert für einen benutzerdefinierten Buildschritt oder ein benutzerdefiniertes Buildtool bereitstellt. Ein benutzerdefiniertes Makro ist ein Name-Wert-Paar. Verwenden Sie die $(name)-Notation in einer Projektdatei, um auf den Wert zuzugreifen.

Ein benutzerdefiniertes Makro wird in einem Eigenschaftenblatt gespeichert. Wenn Ihr Projekt noch kein Eigenschaftenblatt enthält, können Sie eines erstellen, indem Sie die Schritte unter Freigeben oder Wiederverwenden von Visual Studio-Projekteinstellungen befolgen.

So erstellen Sie ein benutzerdefiniertes Makro

  1. Öffnen Sie das Eigenschaften-Manager-Fenster. (Klicken Sie in der Menüleiste auf Anzeigen>Eigenschaften-Manager oder Anzeigen>Weitere Fenster>Eigenschaften-Manager.) Öffnen Sie das Kontextmenü für ein Eigenschaftenblatt (der Name endet jeweils auf .user), und wählen Sie dann Eigenschaften aus. Das Dialogfeld Eigenschaftenseiten für dieses Eigenschaftenblatt wird geöffnet.

  2. Klicken Sie im linken Bereich des Dialogfelds auf Benutzermakros. Klicken Sie im rechten Bereich auf die Schaltfläche Makro hinzufügen, um das Dialogfeld Benutzermakro hinzufügen zu öffnen.

  3. Geben Sie im Dialogfeld einen Namen und einen Wert für das Makro an. Optional können Sie das Kontrollkästchen Makro als Umgebungsvariable in Buildumgebung festlegen aktivieren.

Eigenschaften-Editor

Mit dem Eigenschaften-Editor können Sie bestimmte Zeichenfolgeneigenschaften ändern und Makros als Werte auswählen. Um auf den Eigenschaften-Editor zuzugreifen, wählen Sie eine Eigenschaft auf einer Eigenschaftenseite aus, und klicken Sie rechts auf die Schaltfläche mit dem Pfeil nach unten. Wenn die Dropdownliste die Option <Bearbeiten> enthält, können Sie auf diese klicken, um den Eigenschaften-Editor für diese Eigenschaft anzuzeigen.

Screenshot der Visual Studio-Projekteigenschaftenseite für VC++-Verzeichnisse.

Der Eigenschaften-Editor für die Einstellung „Verzeichnisse einschließen“ ist geöffnet. Er zeigt den ausgewerteten Wert für die Include-Verzeichnisse an, d. h. „C:\Programme(x86)\Microsoft Visual Studio 14.0\VC\Include“. Es werden die beiden geerbten Werte angezeigt: $(VC_IncludePath) und $(WindowsSDK_IncludePath). Ein Kontrollkästchen für „Vom übergeordneten oder Projektstandard erben“ ist aktiviert.

Im Eigenschaften-Editor können Sie auf die Schaltfläche Makros klicken, um die verfügbaren Makros und deren aktuelle Werte anzuzeigen. Die folgende Abbildung zeigt den Eigenschaften-Editor für die Eigenschaft Zusätzliche Includeverzeichnisse, nachdem auf die Schaltfläche Makros geklickt wurde. Wenn das Kontrollkästchen Vom übergeordneten Projekt oder Projektstandard erben aktiviert ist und Sie einen neuen Wert hinzufügen, wird dieser an alle Werte angefügt, die derzeit vererbt werden. Wenn Sie das Kontrollkästchen deaktivieren, ersetzt der neue Wert die vererbten Werte. In den meisten Fällen bleibt das Kontrollkästchen aktiviert.

Screenshot des Dialogfelds „Eigenschaften-Editor“ nach dem Auswählen der Schaltfläche „Makros“.

Der Eigenschaften-Editor für Include-Verzeichnisse ist geöffnet. Der ausgewertete Wert wird zusammen mit den geerbten Werten angezeigt. Ein Listenfeld enthält verschiedene Makros und deren Werte, z. B. $(CharacterSet), das auf Unicode festgelegt ist.

Hinzufügen eines Includeverzeichnisses zu den Standardverzeichnissen

Wenn Sie einem Projekt ein Include-Verzeichnis hinzufügen, müssen Sie darauf achten, die Standardverzeichnisse nicht zu überschreiben. Die richtige Methode, ein Verzeichnis hinzuzufügen, besteht darin, den neuen Pfad anzufügen (z. B. „C:\MyNewIncludeDir\“), und dann das Makro $(IncludePath) an den Eigenschaftswert anzufügen.

Schnelles Suchen und Durchsuchen aller Eigenschaften

Die Eigenschaftenseite Alle Optionen (unter dem Knoten Konfigurationseigenschaften>C/C++ im linken Bereich des Dialogfelds Eigenschaftenseiten) bietet eine schnelle Möglichkeit, die Eigenschaften zu durchsuchen, die im aktuellen Kontext verfügbar sind, und nach ihnen zu suchen. Über ein spezielles Suchfeld und eine einfache Syntax können Sie Ergebnisse filtern:

Kein Präfix:
Suche nur in den Eigenschaftennamen (untergeordnete Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung)

/“ oder „-“:
Suche nur in den Compilerschaltern (Präfix ohne Berücksichtigung der Groß-/Kleinschreibung)

v:
Suche nur in Werten (untergeordnete Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung)

Festlegen von Umgebungsvariablen für einen Build

Der MSVC-Compiler (cl.exe) erkennt bestimmte Umgebungsvariablen, insbesondere LIB, LIBPATH, PATH, und INCLUDE. Wenn Sie die Erstellung mit der IDE vornehmen, werden die Eigenschaften, die auf der Eigenschaftenseite VC++-Verzeichnisse festgelegt sind, zum Festlegen der Umgebungsvariablen verwendet. Wenn LIB-, LIBPATH-, und INCLUDE-Werte bereits festgelegt wurden, beispielsweise durch eine Developer-Eingabeaufforderung, werden diese durch die Werte der entsprechenden MSBuild-Eigenschaften ersetzt. Der Build stellt dann PATH den Wert der ausführbaren Verzeichniseigenschaft VC++-Verzeichnisse voran. Sie können eine benutzerdefinierte Umgebungsvariable festlegen, indem Sie ein benutzerdefiniertes Makro erstellen und dann das Kontrollkästchen Makro als Umgebungsvariable in Buildumgebung festlegen aktivieren.

Festlegen von Umgebungsvariablen für eine Debugsitzung

Erweitern Sie im linken Bereich des Dialogfelds Eigenschaftenseiten die Konfigurationseigenschaften des Projekts, und klicken Sie auf Debugging.

Ändern Sie im rechten Bereich die Projekteinstellungen Umgebung oder Mergeumgebung, und klicken Sie dann auf die Schaltfläche OK.

In diesem Abschnitt

Freigeben oder Wiederverwenden von Visual Studio-Projekteinstellungen
Erstellen einer .props-Datei mit benutzerdefinierten Buildeinstellungen, die freigegeben oder wiederverwendet werden kann

Vererbung von Projekteigenschaften
Beschreibt die Auswertungsreihenfolge für die .props-, .targets-, und .vcxproj-Dateien sowie die Umgebungsvariablen im Buildprozess

Ändern von Eigenschaften und Zielen ohne Änderungen an der Projektdatei
Erstellen temporärer Buildeinstellungen, ohne dass eine Projektdatei geändert werden muss

Weitere Informationen

Visual Studio-Projekte: C++
.vcxproj- und .props-Dateistruktur
Eigenschaftenseite: XML-Dateien