Festlegen der Compiler- und BuildeigenschaftenSet compiler and build properties

In der IDE werden alle Informationen, die für das Erstellen eines Projekts erforderlich sind, als Eigenschaften verfügbar gemacht.In the IDE, all information that is needed to build a project is exposed as properties. Zu diesen Informationen zählen unter anderem der Anwendungsname, die Erweiterung (z.B. DLL, LIB, EXE), Compileroptionen, Linkeroptionen, Debuggereinstellungen und benutzerdefinierte Buildschritte.This information includes the application name, extension (such as DLL, LIB, EXE), compiler options, linker options, debugger settings, custom build steps, and many other things. Üblicherweise verwenden Sie die Eigenschaftenseiten, um diese Eigenschaften anzuzeigen und zu ändern.Typically, you use property pages to view and modify these properties. Klicken Sie im Hauptmenü auf Projekt > Projektname Eigenschaften, oder klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und klicken Sie dann auf Eigenschaften, um auf die Eigenschaftenseiten zuzugreifen.To access the property pages, choose Project > projectname Properties from the main menu, or right-click on the project node in Solution Explorer and choose Properties.

StandardeigenschaftenDefault properties

Wenn Sie ein Projekt erstellen, weist das System verschiedenen Eigenschaften Werte zu.When you create a project, the system assigns values for various properties. Die Standardwerte variieren in Abhängigkeit von der Art des Projekts und den Optionen, die Sie im App-Assistenten auswählen.The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. Ein ATL-Projekt verfügt beispielsweise über Eigenschaften für MIDL-Dateien. Diese sind jedoch in einer Basiskonsolenanwendung nicht vorhanden.For example, an ATL project has properties related to MIDL files, but these are absent in a basic console application. Die Standardeigenschaften werden im Bereich „Allgemein“ auf den Eigenschaftenseiten angezeigt:The default properties are shown in the General pane in the Property Pages:

Visual C++: ProjektstandardsVisual C++ Project Defaults

Anwenden von Eigenschaften auf Buildkonfigurationen und ZielplattformenApplying properties to build configurations and target platforms

Einige Eigenschaften (z.B. der Anwendungsname) gelten für alle Buildvarianten, unabhängig von der Zielplattform oder davon, ob es sich um einen Debug- oder um einen Releasebuild handelt.Some properties, such as the application name, apply to all build variations, regardless of the target platform or whether it is a debug or release build. Die meisten Eigenschaften hängen jedoch von Konfigurationen ab.But most properties are configuration-dependent. Das liegt daran, dass der Compiler wissen muss, auf welcher Plattform das Programm ausgeführt wird und welche Compileroptionen verwendet werden müssen, um den richtigen Code zu generieren.This is because the compiler has to know what specific platform the program will run on and what specific compiler options to use in order to generate the correct code. Wenn Sie eine Eigenschaft festlegen, sollten Sie deshalb darauf achten, für welche Konfiguration und welche Plattform der neue Wert gelten soll.Therefore, when you set a property, it is important to pay attention to which configuration and platform the new value should apply to. Soll sie nur für Win32-Debugbuilds oder ebenfalls für ARM- und x64-Debugbuilds gelten?Should it apply only to Debug Win32 builds, or should it also apply to Debug ARM and Debug x64? Die Eigenschaft Optimierung ist in einer Releasekonfiguration beispielsweise standardmäßig auf Geschwindigkeit maximieren (/O2) festgelegt. In einer Debugkonfiguration ist sie jedoch deaktiviert.For example, the Optimization property, by default, is set to Maximize Speed (/O2) in a Release configuration, but is disabled in the Debug configuration.

Die Eigenschaftenseiten wurden so entwickelt, dass Sie immer sehen und bei Bedarf ändern können, für welche Konfiguration und Plattform ein Eigenschaftswert gelten soll.The property pages are designed so that you can always see, and if necessary modify, which configuration and platform a property value should apply to. Die folgende Abbildung zeigt die Eigenschaftenseiten mit Informationen zur Konfiguration und zur Plattform in den Listenfeldern im oberen Bereich.The following illustration shows the property pages with the configuration and platform information in the list boxes at the top. Wenn die Eigenschaft Optimierung hier festgelegt ist, gilt diese nur für Win32-Debugbuilds. Dies ist die aktive Konfiguration (angezeigt durch die roten Pfeile).When the Optimization property is set here, it will apply only to Debug Win32 builds, which happens to be the active configuration, as shown by the red arrows.

Visual C++: Eigenschaftenseiten mit aktiver KonfigurationVisual C++ Property Pages showing active configuration

Die folgende Abbildung zeigt dieselbe Eigenschaftenseite des Projekts, allerdings wurde die Konfiguration in „Release“ geändert.The following illustration shows the same project property page, but the configuration has been changed to Release. Beachten Sie den geänderten Wert der Eigenschaft „Optimierung“.Note the different value for the Optimization property. Beachten Sie außerdem, dass die aktive Konfiguration immer noch „Debug“ ist.Also note that the active configuration is still Debug. Sie können hier Eigenschaften für jede Konfiguration festlegen. Diese müssen nicht der aktiven Konfiguration entsprechen.You can set properties for any configuration here; it doesn't have to be the active one.

Visual C++: Eigenschaftenseiten mit Konfiguration „Release“Visual C++ Property Pages showing release config

ZielplattformenTarget platforms

Zielplattform bezieht sich auf den Gerätetyp und/oder das Betriebssystem, auf dem die ausführbare Datei ausgeführt wird.Target platform refers to the kind of device and/or operating system that the executable will run on. Sie können ein Projekt für mehr als eine Plattform erstellen.You can build a project for more than one platform. Die verfügbaren Zielplattformen für C++-Projekte hängen von der Art des Projekts ab. Unter anderem sind Win32, x64, ARM, Android und iOS verfügbar.The available target platforms for C++ projects depend on the kind of project; they include but are not limited to Win32, x64, ARM, Android, and iOS. Die Zielplattform x86, die im Konfigurations-Manager angezeigt wird, entspricht Win32 in nativen C++-Projekten.The x86 target platform that you might see in Configuration Manager is identical to Win32 in native C++ projects. Win32 bedeutet 32-Bit-Windows, und x64 bedeutet 64-Bit-Windows.Win32 means 32-bit Windows and x64 means 64-bit Windows. Weitere Informationen zu diesen beiden Plattformen finden Sie unter Ausführung von 32-Bit-Anwendungen.For more information about these two platforms, see Running 32-bit applications.

Der Wert Beliebige CPU, den Sie im Konfigurations-Manager für die Zielplattform sehen, hat keine Auswirkung auf native C++-Projekte. Er ist nur für C++/CLI- und andere .NET-Projekttypen relevant.The Any CPU target platform value that you might see in Configuration Manager has no effect on native C++ projects; it is relevant for C++/CLI and other .NET project types. Weitere Informationen finden Sie unter /CLRIMAGETYPE (Angeben des CLR-Bildtyps).For more information, see /CLRIMAGETYPE (Specify Type of CLR Image).

Weitere Informationen zum Festlegen von Eigenschaften für einen Debugbuild finden Sie unter:For more information about setting properties for a Debug build, see:

Optionen für C++-Compiler und LinkerC++ compiler and linker options

Die Optionen für C++-Compiler und Linker sind unter den Knoten C/C++ und Linker im linken Bereich unter Konfigurationseigenschaften zu finden.C++ compiler and linker options are located under the C/C++ and Linker nodes in the left pane under Configuration Properties. Diese werden direkt in Befehlszeilenoptionen übersetzt, die an den Compiler übergeben werden.These translate directly to command-line options that will be passed to the compiler. 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.To read documentation about a specific option, select the option in the center pane and press F1. Alternativ können Sie die Dokumentation für alle Optionen unter Compileroptionen und Linkeroptionen durchsuchen.Or, you can browse documentation for all the options at MSVC Compiler Options and MSVC Linker Options.

Im Dialogfeld Eigenschaftenseiten werden nur die Eigenschaftenseiten angezeigt, die für das aktuelle Projekt relevant sind.The Property Pages dialog box shows only the property pages that are relevant to the current project. Wenn das Projekt beispielsweise keine IDL-Datei enthält, wird die MIDL-Eigenschaftenseite nicht angezeigt.For example, if the project does not have an .idl file, the MIDL property page is not displayed. Weitere Informationen zu den Einstellungen auf den einzelnen Eigenschaftenseiten finden Sie unter Referenz zu den Windows-C++-Projekteigenschaftenseiten.For more information about the setting on each property pages, see Property Pages (C++).

Verzeichnis- und PfadwerteDirectory and path values

MSBuild unterstützt die Verwendung von Kompilierzeitkonstanten („Makros“ genannt) für bestimmte Zeichenfolgenwerte, die Verzeichnisse und Pfade enthalten.MSBuild supports the use of compile-time constants called "macros" for certain string values include directories and paths. Diese werden auf den Eigenschaftenseiten verfügbar gemacht, wo Sie mithilfe des Eigenschaften-Editors auf sie verweisen und sie ändern können.These are exposed in the property pages, where you can refer to and modify them by using the Property Editor.

Die folgende Abbildung zeigt die Eigenschaftenseiten für ein Visual Studio-C++-Projekt.The following illustration shows the property pages for a Visual Studio C++ project. Im linken Bereich ist die Regel VC++-Verzeichnisse ausgewählt, und im rechten Bereich sind die Eigenschaften aufgeführt, die dieser Regel zugeordnet sind.In the left pane, the VC++ Directories rule is selected, and the right pane lists the properties that are associated with that rule. Die $(...)-Werte werden als Makros bezeichnet.The $(...) values are called macros. Ein Makro ist eine Kompilierzeitkonstante, die auf einen benutzerdefinierten Wert oder auf einen Wert verweisen kann, der von Visual Studio oder dem MSBuild-System definiert wurde.A macro is a compile-time constant that can refer to a value that is defined by Visual Studio or the MSBuild system, or to a user-defined value. Mit Makros anstelle von hartcodierten Werten wie Verzeichnispfaden können Eigenschaftseinstellungen zwischen Computern und verschiedenen Versionen von Visual Studio einfacher freigegeben werden. Zudem können Sie besser sicherstellen, dass die Projekteinstellungen ordnungsgemäß an der Eigenschaftsvererbung teilnehmen.By using macros instead of hard-coded values such as directory paths, you can more easily share property settings between machines and between versions of Visual Studio, and you can better ensure that your project settings participate correctly in property inheritance.

ProjekteigenschaftenseitenProject property pages

Sie können den Eigenschaften-Editor verwenden, um die Werte aller verfügbaren Makros anzuzeigen.You can use the Property Editor to view the values of all available macros.

Vordefinierte MakrosPredefined macros

Globale Makrosglobal macros
Gilt für alle Elemente in einer Projektkonfiguration.Applies to all items in a project configuration. Besitzt die Syntax $(name).Has the syntax $(name). Ein Beispiel eines globalen Makros ist $(VCInstallDir), das das Stammverzeichnis der Visual Studio-Installation speichert.An example of a global macro is $(VCInstallDir), which stores the root directory of your Visual Studio installation. Ein globales Makro entspricht einer PropertyGroup in MSBuild.A global macro corresponds to a PropertyGroup in MSBuild.

Elementmakrositem macros
Besitzt die Syntax %(name).Has the 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.For a file, an item macro applies only to that file—for example, you can use %(AdditionalIncludeDirectories) to specify include directories that apply only to a particular file. Diese Art des Elementmakros entspricht den ItemGroup-Metadaten in MSBuild.This kind of item macro corresponds to an ItemGroup metadata in MSBuild. Wenn ein Elementmakro im Zusammenhang mit einer Projektkonfiguration verwendet wird, gilt es für alle Dateien eines bestimmten Typs.When it's used in the context of a project configuration, an item macro applies to all files of a certain type. Beispielsweise kann die C/C++-Konfigurationseigenschaft Präprozessordefinitionen ein %(PreprocessorDefinitions)-Elementmakro verwenden, das für alle CPP-Dateien im Projekt gilt.For example, the C/C++ Preprocessor Definitions configuration property can take a %(PreprocessorDefinitions) item macro that applies to all .cpp files in the project. Diese Art des Elementmakros entspricht den ItemDefinitionGroup-Metadaten in MSBuild.This kind of item macro corresponds to an ItemDefinitionGroup metadata in MSBuild. Weitere Informationen finden Sie unter Item Definitions (Elementdefinitionen).For more information, see Item Definitions.

benutzerdefinierte MakrosUser-defined macros

Sie können benutzerdefinierte Makros erstellen, um sie als Variablen in Projektbuilds zu verwenden.You can create user-defined macros to use as variables in project builds. Sie können z. B. ein benutzerdefiniertes Makro erstellen, das einen Wert für einen benutzerdefinierten Buildschritt oder ein benutzerdefiniertes Buildtool bereitstellt.For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. Ein benutzerdefiniertes Makro ist ein Name-Wert-Paar.A user-defined macro is a name/value pair. Verwenden Sie in einer Projektdatei die Notation $( name ) , um auf den Wert zuzugreifen.In a project file, use the $(name) notation to access the value.

Ein benutzerdefiniertes Makro wird in einem Eigenschaftenblatt gespeichert.A user-defined macro is stored in a property sheet. 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.If your project does not already contain a property sheet, you can create one by following the steps under Share or reuse Visual Studio project settings.

So erstellen Sie ein benutzerdefiniertes MakroTo create a user-defined macro

  1. Öffnen Sie das Eigenschaften-Manager-Fenster.Open the Property Manager window. (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 klicken Sie dann auf Eigenschaften.(On the menu bar, choose View > Property Manager or View > Other Windows > Property Manager.) Open the shortcut menu for a property sheet (its name ends in .user) and then choose Properties. Das Dialogfeld Eigenschaftenseiten für dieses Eigenschaftenblatt wird geöffnet.The Property Pages dialog box for that property sheet opens.

  2. Klicken Sie im linken Bereich des Dialogfelds auf Benutzermakros.In the left pane of the dialog box, select User Macros. Klicken Sie im rechten Bereich auf die Schaltfläche Makro hinzufügen, um das Dialogfeld Benutzermakro hinzufügen zu öffnen.In the right pane, choose the Add Macro button to open the Add User Macro dialog box.

  3. Geben Sie im Dialogfeld einen Namen und einen Wert für das Makro an.In the dialog box, specify a name and value for the macro. Optional können Sie das Kontrollkästchen Makro als Umgebungsvariable in Buildumgebung festlegen aktivieren.Optionally, select the Set this macro as an environment variable in the build environment check box.

Eigenschaften-EditorProperty Editor

Mit dem Eigenschaften-Editor können Sie bestimmte Zeichenfolgeneigenschaften ändern und Makros als Werte auswählen.You can use the Property Editor to modify certain string properties and select macros as values. 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.To access the Property Editor, select a property on a property page and then choose the down arrow button on the right. Wenn die Dropdownliste <Edit> enthält, können Sie dies auswählen, um den Eigenschaften-Editor für diese Eigenschaft anzuzeigen.If the drop-down list contains <Edit>, then you can choose it to display the Property Editor for that property.

Ein Eigenschaften-Dropdown-Steuerelement wird zum Zugriff auf den Eigenschaften-Editor verwendet.A property drop-down control is used to access the Property Editor

Im Eigenschaften-Editor können Sie auf die Schaltfläche Makros klicken, um die verfügbaren Makros und deren aktuelle Werte anzuzeigen.In the Property Editor, you can choose the Macros button to view the available macros and their current values. Die folgende Abbildung zeigt den Eigenschaften-Editor für die Eigenschaft Zusätzliche Includeverzeichnisse, nachdem auf die Schaltfläche Makros geklickt wurde.The following illustration shows the Property Editor for the Additional Include Directories property after the Macros button was chosen. Wenn das Kontrollkästchen Vom übergeordneten Projekt erben oder Projektstandard aktiviert ist und Sie einen neuen Wert hinzufügen, wird dieser an alle Werte angefügt, die derzeit vererbt werden.When the Inherit from parent or project defaults check box is selected and you add a new value, it is appended to any values that are currently being inherited. Wenn Sie das Kontrollkästchen deaktivieren, ersetzt der neue Wert die vererbten Werte.If you clear the check box, your new value replaces the inherited values. In den meisten Fällen bleibt das Kontrollkästchen aktiviert.In most cases, leave the check box selected.

Dialogfeld „Eigenschaften-Editor“ für die Eigenschaft „Includeverzeichnisse“The Property Editor dialog for the Include Directories property

Hinzufügen eines Includeverzeichnisses zu den StandardverzeichnissenAdd an include directory to the set of default directories

Wenn Sie einem Projekt ein Includeverzeichnis hinzufügen, ist es wichtig darauf zu achten, die Standardverzeichnisse nicht zu überschreiben.When you add an include directory to a project, it is important not to override all the default directories. Die richtige Methode, ein Verzeichnis hinzuzufügen, besteht darin, den neuen Pfad anzufügen (z.B. C:\MeinNeuesIncludeVerz"), und dann das Makro $(IncludePath) an den Eigenschaftswert anzufügen.The correct way to add a directory is to append the new path, for example "C:\MyNewIncludeDir", and then to Append the $(IncludePath) macro to the property value.

Schnelles Suchen und Durchsuchen aller EigenschaftenQuickly browse and search all properties

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.The All Options property page (under the Configuration Properties | C/C++ node in the Property Pages dialog box) provides a quick way to browse and search the properties that are available in the current context. Über ein spezielles Suchfeld und eine einfache Syntax können Sie Ergebnisse filtern:It has a special search box and a simple syntax to help you filter results:

Kein Präfix:No prefix:
Suche nur in den Eigenschaftennamen (untergeordnete Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung)Search in property names only (case-insensitive substring).

'/' oder '-' :'/' or '-' :
Suche nur in den Compilerschaltern (Präfix ohne Berücksichtigung der Groß-/Kleinschreibung)Search only in compiler switches (case-insensitive prefix)

v:v:
Suche nur in Werten (untergeordnete Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung)Search only in values (case-insensitive substring).

Festlegen von Umgebungsvariablen für einen BuildSet environment variables for a build

Der MSVC-Compiler (cl.exe) erkennt bestimmte Umgebungsvariablen, insbesondere LIB, LIBPATH, PATH und INCLUDE.The MSVC compiler (cl.exe) recognizes certain environment variables, specifically LIB, LIBPATH, PATH, and 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.When you build with the IDE, the properties that are set in the VC++ Directories Property Page property page are used to set those environment variables. Wenn LIB-, LIBPATH- und INCLUDE-Werte bereits festgelegt wurden, beispielsweise durch eine Developer-Eingabeaufforderung, werden diese durch die Werte der entsprechenden MSBuild-Eigenschaften ersetzt.If LIB, LIBPATH, and INCLUDE values have already been set, for example by a Developer Command Prompt, they are replaced with the values of the corresponding MSBuild properties. Der Build stellt dann PATH den Wert der ausführbaren Verzeichniseigenschaft VC++-Verzeichnisse voran.The build then prepends the value of the VC++ Directories executable directories property to 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.You can set a user-defined environment variable by creating a user-defined macro and then checking the box that says Set this macro as an environment variable in the build environment.

Festlegen von Umgebungsvariablen für eine DebugsitzungSet environment variables for a debugging session

Erweitern Sie im linken Bereich des Dialogfelds Eigenschaftenseiten die Konfigurationseigenschaften des Projekts, und klicken Sie auf Debugging.In the left pane of the project's Property Pages dialog box, expand Configuration Properties and then select Debugging.

Ändern Sie im rechten Bereich die Projekteinstellungen Umgebung oder Mergeumgebung, und klicken Sie dann auf die Schaltfläche OK.In the right pane, modify the Environment or Merge Environment project settings and then choose the OK button.

In diesem AbschnittIn this section

Freigeben oder Wiederverwenden von Visual Studio-ProjekteinstellungenShare or reuse Visual Studio project settings
Erstellen einer PROPS-Datei mit benutzerdefinierten Buildeinstellungen, die freigegeben oder wiederverwendet werden kannHow to create a .props file with custom build settings that can be shared or reused.

Vererbung von ProjekteigenschaftenProject property inheritance
Beschreibt die Auswertungsreihenfolge für die PROPS-, TARGETS- und VCXPROJ-Dateien sowie die Umgebungsvariablen im BuildprozessDescribes the order of evaluation for the .props, .targets, .vcxproj files and environment variables in the build process.

Ändern von Eigenschaften und Zielen ohne Änderungen an der ProjektdateiModify properties and targets without changing the project file
Erstellen temporärer Buildeinstellungen, ohne dass eine Projektdatei geändert werden mussHow to create temporary build settings without having to modify a project file.

Siehe auchSee also

Visual Studio-Projekte: C++Visual Studio Projects - C++
VCXPROJ- und PROPS-Dateistruktur.vcxproj and .props file structure
Eigenschaftenseite: XML-DateienProperty page XML files