Freigeben über


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 das Erstellen von Visual Studio, von VS Code, in einer Continuous Integration-Pipeline und von der Befehlszeile unter Windows, Linux und Mac zu steuern. Weitere Informationen zu CMakePresets.json finden Sie unter Konfigurieren und Kompilieren mit CMake-Voreinstellungen.

Wenn Sie Projekte pflegen, die eine CMakeSettings.json-Datei für die CMake-Buildkonfiguration verwenden, bietet Visual Studio 2019 und spätere Versionen einen CMake-Einstellungen-Editor. Der Editor ermöglicht es Ihnen, CMake-Konfigurationen hinzuzufügen und deren Einstellungen mühelos anzupassen. Es soll eine einfachere Alternative zum manuellen Bearbeiten der CMakeSettings.json-Datei sein. Wenn Sie jedoch die Datei direkt bearbeiten möchten, können Sie die Verknüpfung Bearbeiten JSON oben rechts im Editor aktivieren.

Um den CMake-Einstellungen-Editor zu öffnen, aktivieren Sie das Konfiguration-Dropdown in der Hauptsymbolleiste und wählen Sie Konfigurationen verwalten aus.

Screenshot der CMake-Konfigurations-Dropdownliste. „Verwalten von Konfigurationen“ ist hervorgehoben.

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

Screenshot des CMake-Einstellungs-Editors.

Der linke Bereich zeigt die installierten Konfigurationen (x86-Debuggen). Der rechte Bereich zeigt die Einstellungen für die aktivierte Konfiguration. Die Einstellungen umfassen den Konfigurationsnamen, den Konfigurationstyp (auf Debuggen gesetzt), das Toolset (auf msvc_x86 gesetzt), die CMake-Toolchain-Datei (leer), das Build-Stammverzeichnis (enthält ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), CMake-Befehlsargumente (leer) und Build-Befehlsargumente (-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 geschrieben, die CMakeSettings.json genannt wird. Diese Datei stellt Befehlszeilenargumente und Umgebungsvariablen zur Verfügung, die beim Erstellen der Projekte an CMake übergeben werden. Visual Studio ändert CMakeLists.txt niemals automatisch; durch die Verwendung von CMakeSettings.json können Sie das Erstellen über Visual Studio anpassen, während die CMake-Projektdateien unberührt bleiben, sodass andere in Ihrem Team sie mit welchen Werkzeugen auch immer verbrauchen 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 debuggen, Größe anpassen, Release und RelWithDebInfo. Es ist der CMAKE_BUILD_TYPE-Zuordnung zugeordnet.

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 die Bearbeiten JSON-Verknüpfung oben rechts im Einstellungen-Editor aus und bearbeiten Sie die CMakeSettings.json-Datei direkt.

CMake-Toolkettendatei

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

Buildstamm

Entspricht buildRoot. Karten zu CMAKE_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. Spezifiziert alle weiteren Befehlszeilenoptionen, die an CMake übergeben werden.

Build-Befehlsargumente

Diese Einstellung entspricht buildCommandArgs. Gibt Weitere Switches an, die an das zugrunde liegende erstellen System übergeben werden. Beispielsweise wird beim Übergeben von -v bei Verwendung des Ninja-Generators erzwungen, dass Ninja Befehlszeilen ausgibt.

CTest-Befehlsargumente

Diese Einstellung entspricht ctestCommandArgs. Spezifiziert weitere Befehlszeilenoptionen, die an CTest übergeben werden, wenn Tests ausgeführt werden.

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 rsync, ein schnelles, vielseitiges Dateikopiervorgang-Tool, übergeben werden.

CMake-Variablen und -Cache

Diese Einstellungen aktivieren Sie, CMake-Variablen festzulegen und sie in „CMakeSettings.json“ zu speichern. Sie werden zur Erstellungszeit an CMake übergeben und setzen alle Werte in der CMakeLists.txt Datei außer Kraft. 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 aus, um eine Liste aller verfügbaren CMake-Variablen zur Bearbeitung anzuzeigen, einschließlich erweiterter Variablen (laut CMakeGUI). Sie können die Liste nach dem Variablennamen filtern.

Diese Einstellung entspricht variables. Enthält ein Name/Wert-Paar von CMake-Variablen, die als „-D name=value“ an 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--G-Switch 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. Allerdings könnten einige CMake-Projekte möglicherweise nicht korrekt 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 aktiviert ist, erbt Visual Studio den Modus von der angegebenen Werkzeugsammlung.

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 Stamm-CMakeLists.txt-Datei 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 CMakeSettings.json bearbeiten, 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: Popupfenster „CMake JSON IntelliSense“ im 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 bietet mehrere CMake-Konfigurationen, die definieren, wie CMake aufgerufen wird, um den CMake-Cache für ein bestimmtes Projekt zu erstellen. Um eine neue Konfiguration hinzuzufügen, aktivieren Sie die Konfigurations-Dropdownliste in der Symbolleiste und wählen Sie Konfigurationen verwalten aus:

Screenshot: In der Dropdownliste ausgewählte Option „Konfigurationen verwalten“.

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

Hinzufügen von Konfigurationsoptionen in der Liste vordefinierter Konfigurationen des Dialogfelds „CMake-Einstellungen“.

Wenn Sie zum ersten Mal eine Konfiguration aktivieren, 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, mit der rechten Maustaste auf CMakeSettings.json klicken und Konfiguration hinzufügen auswählen.

Screenshot des Kontextmenüs mit ausgewählter Option „Konfiguration hinzufügen“.

Sie können die Datei auch mithilfe des Editors für CMake-Einstellungen bearbeiten. Klicken Sie mit der rechten Maustaste auf CMakeSettings.json im 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 CMakeSettings.json bearbeiten, 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: Popupfenster „CMake JSON IntelliSense“ im Editor.

Das JSON IntelliSense-Popup für „Konfigurationen“ zeigt buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType und mehrere Andere.

Weitere Informationen zu jeder der Eigenschaften in der Datei finden Sie im CMakeSettings.json Schema-Verweis.

Weitere Informationen

CMake-Projekte in Visual Studio
Konfigurieren Sie ein Linux-CMake-Projekt
Verbinden Sie mit Ihrem Remotecomputer
Debugsitzungen von CMake konfigurieren
Bereitstellen, ausführen und debuggen Sie Ihr Linux-Projekt
CMake vordefinierter Konfigurationsverweis