Anpassen von CMake-Buildeinstellungen

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

Wenn Sie Projekte verwalten, die eine CMakeSettings.json Datei für die CMake-Buildkonfiguration verwenden, stellen Visual Studio 2019 und höher einen CMake-Einstellungs-Editor bereit. Mit dem Editor können Sie CMake-Konfigurationen hinzufügen und ihre Einstellungen 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 oben rechts im Editor auswählen.

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

Screenshot of the CMake configuration drop-down that highlights the Manage Configurations selection.

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

Screenshot of the CMake settings editor.

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 " 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 unberührt bleiben, damit andere Personen in Ihrem Team sie mit allen tools nutzen können, die sie verwenden.

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 werden die Werte "Debug", "MinSizeRel", "Release" und "RelWithDebInfo" unterstützt. Es ordnet 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 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. Toolkette-Dateien 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 anCMAKE_BINARY_DIR, und 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 alle weiteren Befehlszeilenoptionen an CMake übergeben.

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 diese speichern.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 (per CMakeGUI). Sie können die Liste nach dem Variablennamen filtern.

Diese Einstellung entspricht variables. Enthält ein Namenswertpaar 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-Schalter und gibt den zu verwendenden CMake-Generator-G 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 mit Ninja keinen ordnungsgemäßen Build durchführen. 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, das 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 der 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 Maustaste CMakeSettings.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 CMakeSettings.json rechten Maustaste in Projektmappen-Explorer, und wählen Sie "CMake Einstellungen bearbeiten" aus. 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.

Weitere Informationen zu den einzelnen Eigenschaften in der Datei finden Sie unter CMakeSettings.json 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)