Anpassen von CMake-Buildeinstellungen

Visual Studio verwendet eine CMake-Konfigurationsdatei, um CMake-Generierung und -Build zu steuern. CMakePresets.json wird von Visual Studio 2019, Version 16.10 oder höher, unterstützt und ist die empfohlene CMake-Konfigurationsdatei. CMakePresets.json wird direkt von CMake unterstützt und kann verwendet werden, um die CMake-Generation und den Build von Visual Studio, von VS Code, in einer Pipeline für kontinuierliche Integration und über die Befehlszeile unter Windows, Linux und Mac zu steuern. Weitere Informationen CMakePresets.jsonfinden Sie unter Konfigurieren und Erstellen mit CMake Presets.

Wenn Sie Projekte Standard, die eine CMakeSettings.json Datei für die CMake-Buildkonfiguration verwenden, enthalten, stellen Visual Studio 2019 und höhere Versionen einen CMake-Einstellungs-Editor bereit. Mit dem Editor können Sie CMake-Konfigurationen hinzufügen und ihre Einstellungen ganz einfach anpassen. Es soll eine einfachere Alternative zum manuellen Bearbeiten der CMakeSettings.json Datei sein. Wenn Sie die Datei jedoch lieber direkt bearbeiten möchten, können Sie den JSON-Link bearbeiten in der oberen rechten Ecke des Editors auswählen.

Um den CMake-Einstellungs-Editor zu öffnen, wählen Sie die Dropdownliste "Konfiguration" in der Symbolleiste Standard aus, und wählen Sie "Konfigurationen verwalten" aus.

Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.

Jetzt wird der Einstellungs-Editor mit den installierten Konfigurationen auf der linken Seite angezeigt.

Screenshot of the CMake settings editor.

Im linken Bereich werden die installierten Konfigurationen (x86-Debug) angezeigt. Im rechten Bereich werden die Einstellungen für die ausgewählte Konfiguration angezeigt. Zu den Einstellungen gehören der Konfigurationsname, der Konfigurationstyp (auf Debug festgelegt), das Toolset (auf msvc_x86 festgelegt), die CMake-Toolkettedatei (leer), der Buildstamm (enthält ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), CMake-Befehlsargumente (leer) und Buildbefehlsargumente (-v).

Visual Studio stellt standardmäßig eine x64-Debug-Konfiguration bereit. Sie können weitere Konfigurationen hinzufügen, indem Sie das grüne Pluszeichen auswählen. Die im Editor angezeigten Einstellungen unterscheiden sich möglicherweise abhängig von der ausgewählten Konfiguration.

Die Optionen, die Sie im Editor auswählen, werden in eine Datei mit dem Namen geschrieben CMakeSettings.json. Diese Datei stellt Befehlszeilenargumente und Umgebungsvariablen zur Verfügung, die beim Erstellen der Projekte an CMake übergeben werden. Visual Studio ändert sich niemals CMakeLists.txt automatisch. Mithilfe der Verwendung CMakeSettings.json können Sie den Build über Visual Studio anpassen, während die CMake-Projektdateien unverändert bleiben, damit andere Personen in Ihrem Team sie mit den von ihnen verwendeten Tools nutzen können.

CMake – allgemeine Einstellungen

Die folgenden Einstellungen sind unter der Überschrift Allgemein verfügbar:

Konfigurationsname

Entspricht der Einstellung name. Dieser Name wird in der Dropdownliste für die C++-Konfiguration angezeigt. Sie können das ${name}-Makro verwenden, um weitere Eigenschaftswerte wie etwa Pfade zu verfassen.

Konfigurationstyp

Entspricht der Einstellung configurationType. Definiert den Typ der Buildkonfiguration für den ausgewählten Generator. Derzeit unterstützte Werte sind Debug, MinSizeRel, Release und RelWithDebInfo. Es ist zugeordnet zu CMAKE_BUILD_TYPE.

Toolset

Entspricht der Einstellung inheritedEnvironments. Mit dieser Einstellung wird die Compilerumgebung definiert, die zum Erstellen der ausgewählten Konfiguration verwendet wird. Die unterstützten Werte hängen von der Art der Konfiguration ab. Um eine benutzerdefinierte Umgebung zu erstellen, wählen Sie den JSON-Link "JSON bearbeiten" in der oberen rechten Ecke des Einstellungen-Editors aus, und bearbeiten Sie die CMakeSettings.json Datei direkt.

CMake-Toolkettendatei

Hierbei handelt es sich um den Pfad zur CMake-Toolkettendatei. Dieser Pfad wird an CMake als "-DCMAKE_TOOLCHAIN_FILE = <filepath>" übergeben. Toolchaindateien geben Speicherorte von Compilern und Toolchain-Dienstprogrammen sowie andere Zielplattform- und Compilerinformationen an. Wenn für diese Einstellung nichts angegeben ist, verwendet Visual Studio standardmäßig die VCPKG-Toolkettendatei.

Buildstamm

Entspricht buildRoot. Karten an CMAKE_BINARY_DIRund gibt an, wo der CMake-Cache erstellt werden soll. Wenn der angegebene Ordner nicht vorhanden ist, wird er erstellt.

Befehlsargumente

Die folgenden Einstellungen sind unter der Überschrift Befehlsargumente verfügbar:

CMake-Befehlsargumente

Entspricht cmakeCommandArgs. Gibt weitere Befehlszeilenoptionen an, die an CMake übergeben werden.

Build-Befehlsargumente

Diese Einstellung entspricht buildCommandArgs. Gibt weitere Schalter an, die an das zugrunde liegende Buildsystem übergeben werden sollen. Beispielsweise wird beim Übergeben von -v bei Verwendung des Ninja-Generators erzwungen, dass Ninja Befehlszeilen ausgibt.

CTest-Befehlsargumente

Diese Einstellung entspricht ctestCommandArgs. Gibt weitere Befehlszeilenoptionen an, die beim Ausführen von Tests an CTest übergeben werden sollen.

Allgemeine Einstellungen für Remotebuilds

Für Konfigurationen wie Linux, die Remotebuilds verwenden, sind ferner die folgenden Einstellungen verfügbar:

rsync Befehlsargumente

Zusätzliche Befehlszeilenoptionen, die an rsyncein schnelles, vielseitiges Tool zum Kopieren von Dateien übergeben werden.

CMake-Variablen und -Cache

Mit diesen Einstellungen können Sie CMake-Variablen festlegen und in CMakeSettings.json. Sie werden zur Erstellungszeit an CMake übergeben und überschreiben, welche Werte sich in der CMakeLists.txt Datei befinden. Sie können diesen Abschnitt in der gleichen Weise verwenden, in der Sie das CMakeGUI verwenden, um eine Liste aller für die Bearbeitung verfügbaren CMake-Variablen anzuzeigen. Wählen Sie die Schaltfläche "Speichern" und "Cache generieren", um eine Liste aller zum Bearbeiten verfügbaren CMake-Variablen anzuzeigen, einschließlich erweiterter Variablen (gemäß CMakeGUI). Sie können die Liste nach dem Variablennamen filtern.

Diese Einstellung entspricht variables. Enthält ein Name-Wert-Paar von CMake-Variablen, die an -D name=value CMake übergeben werden. Wenn die Buildanweisungen Ihres CMake-Projekts das direkte Hinzufügen aller Variablen zur CMake-Cachedatei festlegen, wird empfohlen, diese stattdessen hier hinzuzufügen.

Erweiterte Einstellungen

CMake-Generator

Diese Einstellung entspricht generator. Karten zum CMake-Switch -G und gibt den zu verwendenden CMake-Generator an. Diese Eigenschaft kann ebenfalls als Makro (${generator}) beim Erstellen anderer Eigenschaftswerte verwendet werden. Visual Studio unterstützt derzeit folgende CMake-Generatoren:

  • "Ninja"
  • "Unix Makefiles"
  • "Visual Studio 16 2019"
  • "Visual Studio 16 2019 Win64"
  • "Visual Studio 16 2019 ARM"
  • "Visual Studio 15 2017"
  • "Visual Studio 15 2017 Win64"
  • "Visual Studio 15 2017 ARM"
  • "Visual Studio 14 2015"
  • "Visual Studio 14 2015 Win64"
  • "Visual Studio 14 2015 ARM"

Da Ninja für schnelle Buildgeschwindigkeiten statt für Flexibilität und Funktionalität entwickelt wurde, ist dieser Generator als Standardwert festgelegt. Einige CMake-Projekte können jedoch möglicherweise nicht ordnungsgemäß mit Ninja erstellt werden. In diesem Fall können Sie CMake anweisen, stattdessen ein Visual Studio-Projekt zu erstellen.

IntelliSense-Modus

Hierbei handelt es sich um den IntelliSense-Modus, der von der IntelliSense-Engine verwendet wird. Wenn kein Modus ausgewählt ist, erbt Visual Studio den Modus vom angegebenen Toolset.

Installationsverzeichnis

Hierbei handelt es sich um das Verzeichnis, in dem CMake Ziele installiert. Wird CMAKE_INSTALL_PREFIX zugeordnet.

Ausführbare CMake-Datei

Hier wird der vollständige Pfad zur ausführbaren CMake-Programmdatei angegeben, einschließlich des Dateinamens und der Erweiterung. Die Verwendung einer benutzerdefinierten Version von CMake mit Visual Studio ist möglich. Geben Sie für Remotebuilds den CMake-Speicherort auf dem Remotecomputer an.

Für Konfigurationen wie Linux, die Remotebuilds verwenden, sind ferner die folgenden Einstellungen verfügbar:

Remoteverzeichnis der Stammdatei „CMakeLists.txt“

Das Verzeichnis auf dem Remotecomputer, der die Stammdatei CMakeLists.txt enthält.

Installationsstammverzeichnis auf dem Remotesystem

Das Verzeichnis auf dem Remotecomputer, in dem CMake Zieldateien installiert. Wird CMAKE_INSTALL_PREFIX zugeordnet.

Quellen auf Remotesystem kopieren

Diese Einstellung gibt an, ob Quelldateien auf den Remotecomputer kopiert werden sollen, und ermöglicht Ihnen, anzugeben, ob rsync oder sftp verwendet werden soll.

„CMakeSettings.json“ direkt bearbeiten

Sie können auch direkt bearbeiten CMakeSettings.json , um benutzerdefinierte Konfigurationen zu erstellen. Der Einstellungs-Editor weist eine Schaltfläche JSON bearbeiten oben rechts auf, mit der die Datei zur Bearbeitung geöffnet wird.

Das folgende Beispiel zeigt eine Beispielkonfiguration, die Sie als Ausgangspunkt verwenden können:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

JSON-IntelliSense unterstützt Sie beim Bearbeiten der Datei CMakeSettings.json:

Screenshot of the CMake JSON IntelliSense pop-up in the editor.

Der JSON-Editor informiert Sie auch, wenn Sie inkompatible Einstellungen auswählen.

Weitere Informationen zu den einzelnen Eigenschaften in der Datei finden Sie in der CMakeSettings.json-Schemareferenz.

Visual Studio 2017 stellt mehrere CMake-Konfigurationen bereit, die definieren, wie CMake aufgerufen wird, um den CMake-Cache für ein bestimmtes Projekt zu erstellen. Um eine neue Konfiguration hinzuzufügen, wählen Sie die Dropdownliste "Konfiguration" in der Symbolleiste aus, und wählen Sie "Konfigurationen verwalten" aus:

Screenshot of Manage configurations selected in the drop-down.

Sie können aus der Liste vordefinierter Konfigurationen wählen:

Add Configuration to CMake Settings dialog list of predefined configurations.

Beim ersten Auswählen einer Konfiguration erstellt Visual Studio eine CMakeSettings.json Datei im Stammordner Ihres Projekts. Diese Datei wird verwendet, um die CMake-Cachedatei erneut zu erstellen, z.B. nach einem Bereinigungsvorgang.

Um eine weitere Konfiguration hinzuzufügen, klicken Sie mit der rechten MaustasteCMakeSettings.json, und wählen Sie "Konfiguration hinzufügen" aus.

Screenshot of the shortcut menu with Add configuration selected.

Sie können die Datei auch mithilfe des Editors für CMake-Einstellungen bearbeiten. Klicken Sie mit der rechten Maustaste in Projektmappen-Explorer, und wählen Sie "CMake Einstellungen bearbeiten" aus.CMakeSettings.json Alternativ können Sie oben im Editor-Fenster aus der Konfigurations-Dropdownliste Konfigurationen verwalten... auswählen.

Sie können auch direkt bearbeiten CMakeSettings.json , um benutzerdefinierte Konfigurationen zu erstellen. Das folgende Beispiel zeigt eine Beispielkonfiguration, die Sie als Ausgangspunkt verwenden können:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

JSON-IntelliSense unterstützt Sie beim Bearbeiten der Datei CMakeSettings.json:

Screenshot of the CMake JSON IntelliSense pop-up in the editor.

Das JSON IntelliSense-Popup für "Konfigurationen" zeigt buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, unter anderem.

Weitere Informationen zu den einzelnen Eigenschaften in der Datei finden Sie in CMakeSettings.json der Schemareferenz.

Siehe auch

CMake Projects in Visual Studio (CMake-Projekte in Visual Studio)
Konfigurieren eines Linux CMake-Projekts
Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer
Konfigurieren von CMake-Debugsitzungen
Bereitstellen, Ausführen und Debuggen Ihres Linux-Projekts
CMake predefined configuration reference (Referenz für vordefinierte CMake-Konfigurationen)