Festlegen der Compiler- und Buildeigenschaften

In der IDE werden alle Informationen, die zum Erstellen eines Projekts benötigt werden, als Eigenschaften verfügbar gemacht. 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. Um auf die Eigenschaftenseiten zuzugreifen, wählen Sie im HauptmenüProjektnameneigenschaften> aus, oder klicken Sie mit der rechten Maustaste auf den Projektknoten in Projektmappen-Explorer, und wählen Sie Eigenschaften aus.

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. Beispielsweise verfügt ein ATL-Projekt über Eigenschaften, die sich auf MIDL-Dateien beziehen, aber diese Eigenschaften sind in einer einfachen Konsolenanwendung nicht vorhanden. Die Standardeigenschaften werden im Bereich „Allgemein“ auf den Eigenschaftenseiten angezeigt:

Screenshot des Dialogfelds Eigenschaftenseiten mit hervorgehobenen Eigenschaften von Project Defaults

Anwenden von Eigenschaften auf Buildkonfigurationen und Zielplattformen

Einige Eigenschaften, z. B. der Anwendungsname, gelten für alle Buildvariationen und Zielplattformen, unabhängig davon, ob es sich um einen Debug- oder Releasebuild handelt. Die meisten Eigenschaften hängen jedoch von Konfigurationen ab. Um den richtigen Code zu generieren, muss der Compiler sowohl die spezifische Plattform kennen, auf der das Programm ausgeführt wird, als auch welche spezifischen Compileroptionen verwendet werden sollen. Wenn Sie also eine Eigenschaft festlegen, ist es wichtig, darauf zu achten, auf welche Konfiguration und Plattform der neue Wert angewendet werden soll. Sollte es nur für Debuggen von Win32-Builds gelten, oder sollte es auch für das Debuggen von ARM64 und Debug x64 gelten? Die Optimization-Eigenschaft ist beispielsweise in einer Releasekonfiguration standardmäßig auf Geschwindigkeit maximieren (/O2) festgelegt, ist aber in der Debugkonfiguration deaktiviert.

Sie können immer die Konfiguration und plattform anzeigen und ändern, auf die ein Eigenschaftswert angewendet werden soll. Die folgende Abbildung zeigt die Eigenschaftenseiten mit den Steuerelementen konfiguration und Plattforminformationen oben. Wenn die Optimization-Eigenschaft hier festgelegt ist, gilt sie nur für Debuggen von Win32-Builds, der derzeit aktiven Konfiguration, wie die roten Pfeile zeigen.

Screenshot des Dialogfelds Eigenschaftenseiten mit Eigenschaftenwerten für die aktuell aktive Konfiguration.

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 mit Eigenschaftenwerten für die Releasekonfiguration.

Zielplattformen

Zielplattform bezieht sich auf die Art des Geräts und Betriebssystems, 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 u. a. 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 Beliebige CPU-Zielplattformwert, der möglicherweise in Configuration Manager angezeigt wird, hat keine Auswirkungen auf native C++-Projekte. Sie 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 Optionen 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 Datei enthält .idl , wird die MIDL-Eigenschaftenseite nicht angezeigt. Weitere Informationen zu den Einstellungen auf den einzelnen Eigenschaftenseiten finden Sie unter Eigenschaftenseiten (C++).

Verzeichnis- und Pfadwerte

MSBuild unterstützt die Verwendung von Kompilierzeitkonstanten für bestimmte Zeichenfolgenwerte, z. B. Includeverzeichnisse und Pfade, die als Makros bezeichnet werden. Ein Makro kann auf einen Wert verweisen, der von Visual Studio oder dem MSBuild-System definiert ist, oder auf einen benutzerdefinierten Wert. Makros sehen wie $(macro-name) oder %(item-macro-name)aus. Sie werden auf den Eigenschaftenseiten verfügbar gemacht, auf die Sie mit dem Eigenschaften-Editor verweisen und sie ändern können. Verwenden Sie Makros anstelle hartcodierter Werte wie Verzeichnispfade. Makros erleichtern die Freigabe von Eigenschafteneinstellungen zwischen Computern und zwischen Versionen von Visual Studio. Außerdem können Sie besser sicherstellen, dass Ihre Projekteinstellungen ordnungsgemäß an der Vererbung von Eigenschaften teilnehmen.

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

Screenshot des Dialogfelds Eigenschaftenseiten mit den VC-Projektverzeichnissen

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 eins erstellen, indem Sie die Schritte unter Freigeben oder Wiederverwenden von Visual Studio-Projekteinstellungen ausführen.

So erstellen Sie ein benutzerdefiniertes Makro

  1. Öffnen Sie das Eigenschaften-Manager-Fenster. (Wählen Sie auf der Menüleiste Ansicht> aus. Eigenschaften-Manager oderAndererWindows-Eigenschaften-Manager>anzeigen>.) Öffnen Sie das Kontextmenü für ein Eigenschaftenblatt (dessen Name endet 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 Bearbeiten> enthält<, können Sie sie auswählen, um den Eigenschaften-Editor für diese Eigenschaft anzuzeigen.

Ein Eigenschaften-Dropdownsteuerelement wird verwendet, um auf den Eigenschaften-Editor zuzugreifen.

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 Von übergeordneten Oder Projektstandard erben aktiviert ist und Sie einen neuen Wert hinzufügen, wird dieser an alle Werte angefügt, die derzeit geerbt werden. Wenn Sie das Kontrollkästchen deaktivieren, ersetzt der neue Wert die vererbten Werte. In den meisten Fällen bleibt das Kontrollkästchen aktiviert.

Das Dialogfeld Eigenschaften-Editor für die Eigenschaft Verzeichnisse einschließen.

Hinzufügen eines Includeverzeichnisses zu den Standardverzeichnissen

Wenn Sie einem Projekt ein Includeverzeichnis hinzufügen, ist es wichtig, nicht alle Standardverzeichnisse außer Kraft zu setzen. Die richtige Methode zum Hinzufügen eines Verzeichnisses besteht darin, den neuen Pfad anzufügen, z. B. "C:\MyNewIncludeDir\", und dann das $(IncludePath) Makro an den Eigenschaftswert anfügen.

Schnelles Suchen und Durchsuchen aller Eigenschaften

Die Eigenschaftenseite Alle Optionen (unter dem Knoten Konfigurationseigenschaften>C/C++ im Dialogfeld Eigenschaftenseiten ) bietet eine schnelle Möglichkeit zum Durchsuchen und Durchsuchen der Eigenschaften, die im aktuellen Kontext verfügbar sind. Ü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, PATHund INCLUDE. Wenn Sie mit der IDE erstellen, werden die Eigenschaften, die auf der Eigenschaftenseite VC++-Verzeichnisse festgelegt sind, verwendet, um diese Umgebungsvariablen festzulegen. Wenn LIBdie Werte , LIBPATHund INCLUDE bereits festgelegt wurden, z. B. durch eine Developer-Eingabeaufforderung, werden sie durch die Werte der entsprechenden MSBuild-Eigenschaften ersetzt. Der Build stellt dann den Wert der Eigenschaft ausführbare Verzeichnisse von VC++-Verzeichnissen voran.PATH 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 können.

Vererbung von Projekteigenschaften
Beschreibt die Reihenfolge der Auswertung für die .props- , .targets- .vcxproj und -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

Siehe auch

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