Arbeiten mit Projekteigenschaften

In der IDE werden alle Compileroptionen, Linkeroptionen, Debuggereinstellungen und benutzerdefinierten Buildschritte als Eigenschaften verfügbar gemacht.Über die Eigenschaftenseiten eines Projekts können Sie die Eigenschaften ansehen und ändern.Sie können Projekteigenschaften unabhängig auf beliebige Kombinationen aus Buildkonfiguration (Debuggen oder Freigeben) und Zielplattform (Win32, x64 oder ARM) anwenden.Eigenschaften können auch für einzelne Dateien in einem Projekt festgelegt werden.

Sie können zwar "globale" Eigenschaften für einen Benutzer und Computer festlegen, dies wird jedoch nicht mehr empfohlen.Stattdessen empfiehlt es sich, über den Eigenschaften-Manager ein Eigenschaftenblatt zu erstellen, um die Einstellungen für die Arten von Projekten zu speichern, die Sie wiederverwenden oder freigeben möchten.Über Eigenschaftenblätter verringern Sie zudem die Wahrscheinlichkeit, dass Eigenschafteneinstellungen für andere Projekttypen versehentlich geändert werden.Eigenschaftenblätter werden später in diesem Artikel ausführlicher beschrieben.

Um den Eigenschaften-Manager anzuzeigen, klicken Sie in der Menüleiste auf Ansicht, dann auf Weitere Fenster und dann auf Eigenschaften-Manager.

Das Visual C++-Projektsystem beruht auf MSBuild.Obwohl Sie die XML-Projektdateien und Eigenschaftenblätter direkt über die Befehlszeile bearbeiten können, wird die Verwendung der IDE empfohlen, insbesondere wenn Eigenschaften geändert werden, die an der Vererbung teilnehmen.Eine manuell bearbeitete Datei, die in MSBuild gültig ist, kann nicht notwendigerweise durch das Visual C++-Projektsystem gelesen werden. Möglicherweise werden dadurch kleinere Fehler in den Buildprozess eingeführt.

Eine Projektdatei ist eine XML-Datei mit der Dateinamenerweiterung .vcxproj.Alle Eigenschaften, die Sie in der IDE festlegen, werden direkt in die Projektdatei oder in Eigenschaftenblätter geschrieben, die zur Buildzeit importiert werden.

Die folgende Abbildung zeigt die Eigenschaftenseiten für ein Visual C++-Projekt.Im linken Bereich ist die RegelVC++-Verzeichnisse ausgewählt, und im rechten Bereich werden die Eigenschaften angezeigt, die dieser Regel zugeordnet sind. (Die $(...)-Werte sind Makros, die später in diesem Artikel behandelt werden.) VC++-Verzeichnisse sind eine Konfigurationseigenschaft, deren Werte bei unterschiedlichen Konfigurationen, wie Debuggen oder Freigeben, verschieden sein können.Über die Listenfelder Konfiguration und Plattform oben im Dialogfeld können Sie die Konfigurationen festlegen, die für die Eigenschaften gelten. In vielen Fällen sind Alle Plattformen und Alle Konfigurationen die richtige Wahl.Die Einstellungen in der Regel Allgemeine Eigenschaften gelten für alle Konfigurationen.

Projekteigenschaftenseiten

Einstellungseigenschaften für ein Projekt

So legen Sie im Allgemeinen die Eigenschaften für ein Projekt fest:

So legen Sie eine Eigenschaft für ein Projekt fest

  1. Wählen Sie in der Menüleiste Projekt und Eigenschaften aus.Alternativ können Sie im Projektmappen-Explorer oder im Eigenschaften-Manager das Kontextmenü des Projekts öffnen und dann Eigenschaften auswählen.Das Dialogfeld Eigenschaftenseiten wird geöffnet.

  2. Wählen Sie in den Feldern im oberen Bereich des Dialogfelds die Konfigurationen und Plattformen aus, für die die Einstellung gelten soll.

    Um die Konfigurationen zu erstellen oder zu ändern, die im Feld Konfiguration angezeigt werden, klicken Sie auf die Schaltfläche Konfigurations-Manager.

  3. Legen Sie den Eigenschaftswert fest.Wenn Sie auf die Schaltfläche OK klicken, wird der neue Wert in die Projektdatei geschrieben.

HinweisHinweis

Im Dialogfeld Eigenschaftenseiten werden nur die Eigenschaftenseiten angezeigt, die für das aktuelle Projekt gelten.Wenn das Projekt beispielsweise keine IDL-Datei enthält, wird die MIDL-Eigenschaftenseite nicht angezeigt.

Weitere Informationen zu Eigenschaften im Dialogfeld Eigenschaftenseiten:

TippTipp

Sie können eine Eigenschaftenseite direkt öffnen, indem Sie ihren Namen im Fenster Schnellstart eingeben.

Hartcodierte Eigenschaften im Vergleich zu Makros

Einige Projekteigenschaften können als Wert einen Verweis auf eine Eigenschaft aufweisen, die an anderer Stelle definiert ist.Ein solcher Wert wird als Makro bezeichnet, um ihn von anderen Projekteigenschafteneinstellungen zu unterscheiden.Ein Makro kann auf eine Eigenschaft verweisen, die durch das MSBuild-System definiert wird oder die Sie selbst definiert haben.Mit Makros anstelle von hartcodierten Werte wie Verzeichnispfaden können Eigenschafteneinstellungen zwischen Computern und verschiedenen Versionen von Visual Studio einfacher freigegeben werden. Zudem können Sie besser sicherstellen, dass die Projekteinstellungen ordnungsgemäß an der Eigenschaftenvererbung teilnehmen.

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

  • Elementmakros
    Besitzt die Syntax %(name).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 Elementdefinitionen.

Sie können Makros verwenden, um Eigenschaftswerte zu definieren, und Sie können den Eigenschaften-Editor verwenden, um die Werte verfügbarer Makros anzuzeigen.

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 sie auswählen, um den Eigenschaften-Editor für diese Eigenschaft anzuzeigen.

Property_Editor_Dropdown

Im Eigenschaften-Editor können Sie die Schaltfläche Makros wählen, 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 die Schaltfläche Makros ausgewählt wurde.Wenn das Kontrollkästchen Vom übergeordneten Projekt erben oder Projektstandard ausgewählt 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.

Eigenschaften-Editor, Visual C++

Freigeben von wiederverwendbaren Eigenschaftenkonfigurationen

Wenn Sie einen allgemeinen, häufig verwendeten Satz von Eigenschaften haben, den Sie in mehreren Projekten verwenden möchten, können Sie diese Eigenschaften über den Eigenschaften-Manager in einer wiederverwendbaren Eigenschaftenblattdatei aufzeichnen, deren Dateinamenerweiterung gemäß der Konvention ".props" lautet.Sie können das Blatt (oder die Blätter) auf neue Projekte anwenden, sodass Sie dessen Eigenschaften nicht von Grund auf neu festlegen müssen.Um auf den Eigenschaften-Manager zuzugreifen, klicken Sie auf der Menüleiste auf Ansicht und dann auf Eigenschaften-Manager.

Wenn Sie Neues Projekteigenschaftenblatt hinzufügen auswählen und dann beispielsweise das MyProps.props-Eigenschaftenblatt auswählen, wird ein Eigenschaftenseiten-Dialogfeld geöffnet.Beachten Sie, dass es für das MyProps-Eigenschaftenblatt gilt. Alle Änderungen, die Sie vornehmen, werden in das Blatt und nicht in die Projektdatei (VCXPROJ) geschrieben.

Eigenschaften in einem Eigenschaftenblatt werden überschrieben, wenn die gleiche Eigenschaft direkt in der VCXPROJ-Datei festgelegt ist.

Sie können ein Eigenschaftenblatt so oft wie nötig importieren.Mehrere Projekte in einer Projektmappe können Einstellungen aus demselben Eigenschaftenblatt erben, und ein Projekt kann über mehrere Blätter verfügen.Eigenschaftenblätter selbst können Einstellungen von einem anderen Eigenschaftenblatt erben.

Wichtiger HinweisWichtig

Eine PROPS-Datei wird standardmäßig nicht in der Quellcodeverwaltung verwendet, da sie nicht als Projektelement erstellt wird.Wenn Sie die Datei in die Quellcodeverwaltung aufnehmen möchten, können Sie sie manuell als Projektmappenelement hinzufügen.

So erstellen Sie ein Eigenschaftenblatt

  1. Wählen Sie in der Menüleiste Ansicht und dann Eigenschaften-Manager aus.Der Eigenschaften-Manager wird geöffnet.

  2. Um den Umfang des Eigenschaftenblatts zu definieren, wählen Sie das Element aus, auf das es angewendet wird.Dies kann eine bestimmte Konfiguration oder ein anderes Eigenschaftenblatt sein.Öffnen Sie das Kontextmenü für dieses Element, und wählen Sie Neues Projekteigenschaftenblatt hinzufügen aus.Geben Sie einen Namen und den Speicherort an.

  3. Öffnen Sie im Eigenschaften-Manager das neue Eigenschaftenblatt, und legen Sie dann die Eigenschaften fest, die Sie aufnehmen möchten.

Eigenschaftenvererbung

Projekteigenschaften sind in Ebenen angelegt.Jede Ebene erbt die Werte der vorherigen Ebene. Ein geerbter Wert kann jedoch überschrieben werden, indem Sie explizit die Eigenschaft festlegen.So sieht die grundlegende Vererbungsstruktur aus:

  1. Standardeinstellungen von MSBuild CPP Toolset (..\Programme\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props, die durch die VCXPROJ-Datei importiert wird)

  2. Eigenschaftenblätter

  3. VCXPROJ-Datei (Kann Standard- und die Eigenschaftenblatteinstellungen überschreiben.)

  4. Elementmetadaten

TippTipp

Auf einer Eigenschaftenseite wird eine Eigenschaft in bold im aktuellen Kontext definiert.Eine Eigenschaft in normaler Schriftart ist geerbt.

Eine Projektdatei (VCXPROJ) importiert zur Buildzeit andere Eigenschaftenblätter.Nachdem alle Eigenschaftenblätter importiert sind, wird die Projektdatei ausgewertet, und es wird die jeweils letzte Definition der Eigenschaftswerte verwendet.Manchmal ist es hilfreich, die erweiterte Datei anzuzeigen, um zu bestimmen, wie ein bestimmter Eigenschaftswert vererbt wird.Um die erweiterte Version anzuzeigen, geben Sie folgenden Befehl an einer Visual Studio-Eingabeaufforderung ein. (Ändern Sie die Platzhalterdateinamen in die Namen der Dateien, die Sie verwenden möchten.)

msbuild /pp:temp.txtmyapp**.vcxproj**

Erweiterte Projektdateien können sehr groß und schwierig zu verstehen sein, wenn Sie nicht mit MSBuild vertraut sind.So sieht die grundlegende Struktur einer Projektdatei aus:

  1. Grundlegende Projekteigenschaften, die in der IDE nicht verfügbar gemacht werden.

  2. Import von Microsoft.cpp.default.props, die einige einfache, Toolset-unabhängige Eigenschaften definiert.

  3. Globale Konfigurationseigenschaften (verfügbar gemacht als Standardeigenschaften PlatformToolset und Projekt) auf der Seite Konfiguration – Allgemein.Diese Eigenschaften bestimmen, welche Toolset- und systeminternen Eigenschaftenblätter im nächsten Schritt in Microsoft.cpp.props importiert werden.

  4. Import von Microsoft.cpp.props, die die meisten Projektstandardwerte festlegt.

  5. Import aller Eigenschaftenblätter, einschließlich USER-Dateien.Diese Eigenschaftenblätter können alle Eigenschaften außer die Standardeigenschaften PlatformToolset und Projekt überschreiben.

  6. Die restlichen Eigenschaften der Projektkonfiguration.Diese Werte können das überschreiben, was in den Eigenschaftenblättern festgelegt wurde.

  7. Elemente (Dateien) zusammen mit ihren Metadaten.Diese stellen immer das letzte Wort in den MSBuild-Auswertungsregeln dar, selbst wenn sie vor anderen Eigenschaften und Importen auftreten.

Weitere Informationen finden Sie unter MSBuild-Eigenschaften.

USER-Dateien und mit ihnen verbundene Schwierigkeiten

In früheren Versionen von Visual Studio kamen globale Eigenschaftenblätter mit der .user-Dateinamenerweiterung zum Einsatz. Diese befanden sich in dem Ordner <Benutzerprofil>\AppData\Lokal\Microsoft\MSBuild\v4.0\.Diese Dateien werden nicht mehr empfohlen, da sie Eigenschaften für Projektkonfigurationen pro Benutzer pro Computer festlegen.Solche "globalen" Einstellungen können Builds beeinträchtigen, insbesondere wenn Sie mehr als eine Zielplattform auf dem Buildcomputer verwenden.Wenn Sie beispielsweise ein MFC-Projekt und ein Windows Phone-Projekt haben, wären die USER-Eigenschaften für eines von ihnen ungültig.Wiederverwendbare Eigenschaftenblätter sind flexibler und stabiler.

USER-Dateien werden noch von Visual Studio installiert und nehmen an der Eigenschaftenvererbung teil, sie sind jedoch standardmäßig leer.Die empfohlene Vorgehensweise besteht darin, den Verweis auf diese Dateien im Eigenschaften-Manager zu löschen, um sicherzustellen, dass die Projekte unabhängig von den benutzer- und computerbezogenen Einstellungen funktionieren. Das ist wichtig, um das richtige Verhalten in einer SCC-Umgebung (Quellcodeverwaltung) zu gewährleisten.

Hinzufügen eines Includeverzeichnisses zu den Standardverzeichnissen

Wenn Sie einem Projekt ein Includeverzeichnis hinzufügen, ist es wichtig darauf zu achten, die Standardverzeichnisse nicht zu überschreiben.Die richtige Methode, ein Verzeichnis hinzuzufügen, besteht darin, den neuen Pfad anzufügen, beispielsweise "C:\MeinNeuesIncludeVerz\", und dann das Makro $(IncludePath) an den Eigenschaftswert anzufügen.

Erstellen eines benutzerdefinierten 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.In einer Projektdatei verwenden Sie die $(name)-Notation, um auf den Wert zuzugreifen.

Ein benutzerdefiniertes Makro wird in einem Eigenschaftenblatt gespeichert.Wenn das Projekt noch kein Eigenschaftenblatt enthält, können Sie eines erstellen, indem Sie die Schritte oben in diesem Artikel ausführen.

So erstellen Sie ein benutzerdefiniertes Makro

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

  2. Wählen Sie im linken Bereich des Dialogfelds Benutzermakros aus.Wählen Sie im rechten Bereich die Schaltfläche Makro hinzufügen aus, 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.

Einstellungsumgebungsvariablen für einen Build

Der Visual C++-Compiler (cl.exe) erkennt bestimmte Umgebungsvariablen, insbesondere LIB, LIBPATH, PATH und INCLUDE.Wenn Sie die Erstellung mit der IDE vornehmen, werden die Eigenschaften, die in der Eigenschaftenseite "VC++-Verzeichnisse"-Eigenschaftenseite 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.

Einstellen von Umgebungsvariablen für eine Debugsitzung

Erweitern Sie im linken Bereich des Dialogfelds Eigenschaftenseiten des Projekts Konfigurationseigenschaften, und wählen Sie Debugging aus.

Ändern Sie im rechten Bereich die Projekteinstellungen Umgebung oder Zusammenführungsumgebung, und wählen Sie dann die Schaltfläche OK aus.

Anzeigen aller Makros und ihrer Werte

Wählen Sie im Dialogfeld Eigenschaftenseiten eines Projekts eine Zeichenfolgeneigenschaft wie VC++-Verzeichnisse aus, klicken Sie in der rechten Spalte auf die Schaltfläche mit dem Pfeil nach unten, und wählen Sie dann <Bearbeiten> aus, um den Eigenschaften-Editor zu öffnen.Klicken Sie im Eigenschaften-Editor auf die Schaltfläche Makros.

Gleichzeitiges Festlegen von Eigenschaften für mehrere Konfigurationen

Um Eigenschaften für alle Konfigurationen festzulegen, wählen Sie in den Feldern im oberen Bereich des Dialogfelds Eigenschaftenseiten eines Projekts Alle Konfigurationen und Alle Plattformen aus, und legen Sie dann die gewünschten Eigenschaften fest.

Um Eigenschaften für mehrere, aber nicht alle Konfigurationen festzulegen, wählen Sie die gewünschten Konfigurationen im Eigenschaften-Manager aus, öffnen Sie das Kontextmenü, und klicken Sie auf Eigenschaften.Alle Einstellungen, die Sie ändern, werden auf alle ausgewählten Konfigurationen angewendet.

Sie können auch ein Eigenschaftenblatt für mehrere Konfigurationen erstellen.Erstellen Sie dazu ein Eigenschaftenblatt für jede Konfiguration, öffnen Sie das Kontextmenü einer Konfiguration, wählen Sie Vorhandenes Eigenschaftenblatt hinzufügen aus, und fügen Sie die anderen Blätter hinzu.Wenn Sie ein gemeinsames Eigenschaftenblatt verwenden, beachten Sie jedoch, dass eine Eigenschaft für alle Konfigurationen festgelegt wird, für die das Blatt gilt. Dabei wird in der IDE nicht angezeigt, welche Projekte oder anderen Eigenschaftenblätter von einem bestimmten Eigenschaftenblatt erben.

In großen Projektmappen mit zahlreichen Projekten kann es hilfreich sein, ein Eigenschaftenblatt auf Projektmappenebene zu erstellen.Wenn Sie der Projektmappe ein Projekt hinzufügen, fügen Sie über den Eigenschaften-Manager das Eigenschaftenblatt dem Projekt hinzu.Bei Bedarf können Sie auf Projektebene ein neues Eigenschaftenblatt hinzufügen, über das projektspezifische Werte festgelegt werden.

So durchsuchen Sie einfach alle Optionen

Die Eigenschaftenseite Alle Optionen (unter dem Knoten C/C++ im linken Bereich des Dialogfelds Eigenschaftenseiten) bietet eine schnelle Möglichkeit, durch die Eigenschaften zu navigieren, 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)

Siehe auch

Weitere Ressourcen

Erstellen und Verwalten von Visual C++-Projekten