CMake-Projekte in Visual Studio

CMake ist ein plattformübergreifendes Open Source-Tool, das zum Definieren von Buildprozessen verwendet wird, die auf mehreren Plattformen ausgeführt werden. In diesem Artikel wird davon ausgegangen, dass Sie mit CMake vertraut sind. Weitere Informationen zu CMake finden Sie in der CMake-Dokumentation. Das CMake-Tutorial ist ein guter Ausgangspunkt, um mehr zu erfahren.

Hinweis

CMake wurde in den letzten Releases immer mehr in Visual Studio integriert. Um die Dokumentation für Ihre bevorzugte Version von Visual Studio anzuzeigen, verwenden Sie das Auswahlsteuerelement Version. Es befindet sich am Anfang des Inhaltsverzeichnisses auf dieser Seite.

Die native Unterstützung von Visual Studio für CMake ermöglicht das Bearbeiten, Kompilieren und Debuggen von CMake-Projekten unter Windows, dem Windows-Subsystem für Linux (WSL) und Remotesystemen aus derselben Instanz von Visual Studio. CMake-Projektdateien (z. B. CMakeLists.txt ) werden direkt von Visual Studio für IntelliSense- und Browserzwecke verwendet. cmake.exe wird direkt von Visual Studio für CMake-Konfiguration und -Build aufgerufen.

Installation

Die Komponente C++-CMake-Tools für Windows wird als Teil der Workloads Desktopentwicklung mit C++ und Linux Entwicklung mit C++ installiert. Sowohl CMake-Tools für Windows und Linux-Entwicklung mit C++ sind für die plattformübergreifende CMake-Entwicklung erforderlich.

Screenshot of the Desktop development with C plus plus dropdown selected and the C plus plus C Make tools for Windows option called out.

Weitere Informationen finden Sie unter Install the C++ Linux workload in Visual Studio (Installieren der C++-Workload unter Linux in Visual Studio).

IDE-Integration

Wenn Sie einen Ordner öffnen, der eine CMakeLists.txt -Datei enthält, geschieht Folgendes:

A screenshot of the Start Window in Visual Studio.

  • Visual Studio fügt ein CMake-Element zum Menü Projekt mit Befehlen zum Anzeigen und Bearbeiten von CMake-Skripts hinzu.

  • Im Projektmappen-Explorer werden die Ordnerstruktur und die Dateien angezeigt.

  • Visual Studio führt CMake aus und generiert eine CMake-Cachedatei ( CMakeCache.txt ) für die Standardkonfiguration. Die CMake-Befehlszeile wird im Ausgabefenster zusammen mit weiteren Ausgaben von CMake angezeigt.

  • Im Hintergrund beginnt Visual Studio damit, die Quelldateien zu indizieren, um IntelliSense, das Durchsuchen von Informationen, das Refactoring und vieles mehr zu ermöglichen. Während Sie arbeiten, überwacht Visual Studio die Änderungen im Editor und auf dem Datenträger, damit der Index mit den Quellen synchron ist.

Hinweis

Ab Visual Studio 2022 Version 17.1 Preview 2 werden Sie aufgefordert, ob Sie CMakeLists.txt die CMake-Integration aktivieren oder nicht. Weitere Informationen finden Sie unter CMake-Teilaktivierung.

Sobald die CMake-Cachegenerierung erfolgreich war, können Sie Ihre Projekte logisch nach Zielen organisiert anzeigen. Wählen Sie die Schaltfläche "Ansicht auswählen" auf der Symbolleiste Projektmappen-Explorer aus. Wählen Sie in der Liste in Projektmappen-Explorer - Ansichten die Ansicht "CMake-Ziele" aus, und drücken Sie die EINGABETASTE, um die Zielansicht zu öffnen:

Screenshot of the Solution Explorer Views window with the C Make Targets View highlighted.

Klicken Sie oben im Projektmappen-Explorer auf Alle Dateien anzeigen, um die von CMake generierten Ausgaben in den Ordnern out/build/<config> anzuzeigen.

Verwenden Sie die Datei CMakeLists.txt in jedem Projektordner wie in jedem anderen CMake-Projekt. Sie können Quelldateien angeben, Bibliotheken suchen, Compiler- und Linkeroptionen festlegen und weitere Informationen im Zusammenhang mit dem Buildsystem angeben. Weitere Informationen zu CMake-Sprachdiensten, die von Visual Studio bereitgestellt werden, finden Sie unter Bearbeiten von CMakeLists.txt-Dateien.

Visual Studio verwendet eine CMake-Konfigurationsdatei zum Generieren und Kompilieren von CMake-Caches. Weitere Informationen finden Sie unter Konfigurieren von CMake-Projekten und Kompilieren von CMake-Projekten.

Um beim Debuggen Argumente an eine ausführbare Datei zu übergeben, können Sie eine andere Datei mit dem Namen launch.vs.json verwenden. Weitere Informationen zum Debuggen plattformübergreifender CMake-Projekte in Visual Studio finden Sie unter Debuggen von CMake-Projekten.

Die meisten Visual Studio- und C++-Sprachfeatures werden von CMake-Projekte in Visual Studio unterstützt. Beispiele:

Hinweis

Für andere Arten von „Ordner öffnen“-Projekten wird die zusätzliche JSON-Datei CppProperties.json verwendet. Diese Datei ist für CMake-Projekte nicht relevant.

Konfigurieren von CMake-Projekten

Der CMake-Konfigurationsschritt generiert das Projektbuildsystem. Es entspricht dem Aufrufen cmake.exe aus der Befehlszeile. Weitere Informationen zum CMake-Konfigurationsschritt finden Sie in der CMake-Dokumentation.

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 steuern und von Visual Studio, von VS Code, in einer Fortlaufenden Integrationspipeline und von der Befehlszeile auf Windows, Linux und Mac zu erstellen. Weitere Informationen finden CMakePresets.jsonSie unter Konfigurieren und Erstellen mit CMake Presets. CMakeSettings.jsonIst für Kunden verfügbar, die eine frühere Version von Visual Studio verwenden. Weitere Informationen finden CMakeSettings.jsonSie unter Anpassen von CMake-Buildeinstellungen.

Wenn Sie erhebliche Änderungen an Ihrer CMake-Konfigurationsdatei oder einer CMakeLists.txt -Datei vornehmen, führt Visual Studio automatisch den CMake-Konfigurationsschritt aus. Sie können den Konfigurierenschritt manuell aufrufen: Wählen Sie Project > Cache aus der Symbolleiste konfigurieren aus. Sie können ihre Konfigurationseinstellungen auch in ToolsOptionsCMakeGeneral>>> ändern.

CMake configuration options.

Wenn der Konfigurationsschritt ohne Fehler abgeschlossen wird, werden die verfügbaren Informationen für IntelliSense für C++ und Sprachdienste verwendet. Er wird auch in Erstellungs- und Debugvorgängen verwendet.

Sie können auch einen vorhandenen CMake-Cache in Visual Studio öffnen. Weitere Informationen finden Sie unter Öffnen eines vorhandenen Caches.

Anpassen von Konfigurationsfeedback und -benachrichtigungen

Die meisten Konfigurationsmeldungen werden standardmäßig unterdrückt, es sei denn, es ist ein Fehler aufgetreten. Um alle Nachrichten anzuzeigen, wählen Sie Tools>Optionen>CMake>Ausführliche CMake-Diagnoseausgabe aktivieren aus.

Sie können auch alle CMake-Cachebenachrichtigungen (goldene Leisten) deaktivieren, indem Sie die Auswahl von Show CMake cache notification (CMake-Cachebenachrichtigungen anzeigen) aufheben.

Behandlung von CMake-Cachefehlern

Wenn Sie weitere Informationen zum Status des CMake-Caches benötigen, um ein Problem zu diagnostizieren, öffnen Sie das Hauptmenü Projekt oder das Kontextmenü von CMakeLists.txt im Projektmappen-Explorer, um einen der folgenden Befehle auszuführen:

  • CMakeCache.txt anzeigen öffnet die CMakeCache.txt -Datei aus dem Buildverzeichnis im Editor. Alle Änderungen, die Sie hier an CMakeCache.txt vornehmen, werden gelöscht, wenn Sie den Cache bereinigen. Informationen zum Vornehmen von Änderungen, die nach der Reinigung des Caches beibehalten werden, finden Sie unter Anpassen von CMake-Einstellungen oder Konfigurieren und Erstellen mit CMake-Voreinstellungen.

  • Cache löschen und neu konfigurieren konfiguriert das Buildverzeichnis und konfiguriert aus einem bereinigten Cache neu.

  • Cache konfigurieren erzwingt das Ausführen des Schritts „Generieren“, auch wenn Visual Studio die Umgebung für aktuell hält.

Erstellen von CMake-Projekten

Der CMake-Buildschritt erstellt eine bereits generierte Projektbinärstruktur. Es entspricht dem Aufrufen cmake --build aus der Befehlszeile. Weitere Informationen zum CMake-Buildschritt finden Sie in der CMake-Dokumentation.

Folgende Optionen stehen Ihnen zum Erstellen eines CMake-Projekts zur Verfügung:

  1. Suchen Sie in der Symbolleiste nach der Dropdownliste Startelement. Wählen Sie das bevorzugte Ziel aus, und drücken Sie F5, oder wählen Sie die Schaltfläche Ausführen auf der Symbolleiste aus. Das Projekt wird genau wie eine Visual Studio-Projektmappe zunächst erstellt.

  2. Klicken Sie im Projektmappen-Explorer mit aktivierter CMake-Zielansicht mit der rechten Maustaste auf das CMake-Ziel, und wählen Sie im Kontextmenü Erstellen aus.

  3. Wählen Sie im Hauptmenü "Alle erstellen>" aus. Stellen Sie sicher, dass ein CMake-Ziel bereits in der Dropdownliste Startelement auf der Symbolleiste ausgewählt ist.

Erwartungsgemäß werden die Buildergebnisse im Ausgabefenster und in der Fehlerliste angezeigt.

CMake build errors.

Bearbeiten von Buildeinstellungen

Visual Studio verwendet eine CMake-Konfigurationsdatei um CMake-Builds zu steuern. CMake-Konfigurationsdateien kapseln Buildoptionen wie native Buildtoolsoptionen und Umgebungsvariablen. Wenn CMakePresets.json es sich um Ihre aktive Konfigurationsdatei handelt, finden Sie unter Konfigurieren und Erstellen mit CMake Presets. Wenn CMakeSettings.json es sich um Ihre aktive Konfigurationsdatei handelt, finden Sie unter Anpassen von CMake-Buildeinstellungen. CMakePresets.jsonist in Visual Studio 2019 Version 16.10 oder höher verfügbar und ist die empfohlene CMake-Konfigurationsdatei.

Debuggen von CMake-Projekten

Alle ausführbaren CMake-Ziele werden in der Dropdownliste Startelement in der Symbolleiste angezeigt. Um das Debuggen zu starten, wählen Sie eine aus, und drücken Sie die > Schaltfläche "Debuggen starten" in der Symbolleiste. In einem CMake-Projekt ist die Option „Aktuelles Dokument“ nur für .cpp-Dateien gültig.

A screenshot of the Startup Item dropdown in a CMake project.

Die Befehle Debuggen oder F5 kompilieren das Projekt erst, wenn seit dem vorherigen Build Änderungen vorgenommen wurden. Änderungen an der CMake-Konfigurationsdatei (CMakePresets.json oder CMakeSettings.json) oder einer CMakeLists.txt führt dazu, dass der CMake-Cache neu generiert wird.

Sie können eine CMake-Debugsitzung durch Festlegen von Eigenschaften in der Datei launch.vs.json anpassen. Wenn Sie Debugeinstellungen für ein bestimmtes Ziel anpassen möchten, wählen Sie das Ziel in der Dropdownliste "Startelement" aus, und drücken Sie "Debuggen > debuggen" und "Starten" Einstellungen für <aktives Ziel>. Weitere Informationen zu CMake-Debugsitzungen finden Sie unter Konfigurieren von CMake-Debugsitzungen.

„Nur eigenen Code“ für CMake-Projekte

Wenn Sie für Windows mit dem MSVC-Compiler erstellen, unterstützen CMake-Projekte das „Nur eigenen Code“-Debuggen. Navigieren Sie zu Extras>Optionen>Debuggen>Allgemein, um die „Nur eigenen Code“-Einstellung zu ändern.

„Bearbeiten und Fortfahren“ für CMake-Projekte

Wenn Sie mit dem MSVC-Compiler für Windows kompilieren, unterstützen CMake-Projekte „Bearbeiten und Fortfahren“. Fügen Sie der CMakeLists.txt -Datei den folgenden Code hinzu, um „Bearbeiten und Fortfahren“ zu aktivieren.

if(MSVC)
  target_compile_options(<target> PUBLIC "/ZI")
  target_link_options(<target> PUBLIC "/INCREMENTAL")
endif()

Anfügen eines CMake-Projekts unter Linux

In Visual Studio können Sie einen Prozess debuggen, der auf einem Linux-Remotesystem oder WSL ausgeführt wird, und ihn mit dem GDB-Debugger debuggen. Wählen Sie zum Einstieg Debuggen>An den Prozess anhängen... aus, legen Sie den Verbindungstyp auf SSH fest, und wählen Sie Ihr Verbindungsziel aus der Liste der Verbindungen im Verbindungs-Manager aus. Wählen Sie einen Prozess aus der Liste der verfügbaren Prozesse aus, und klicken Sie auf Anfügen. GDB muss auf Ihrem Linux-Computer installiert sein. Weitere Informationen zu SSH-Verbindungen finden Sie im Verbindungs-Manager.

A screenshot of the Attach to Process menu.

CMake-Teilaktivierung

In Visual Studio 2022 Version 17.1 und höher wird die CMake-Funktionalität nicht automatisch aktiviert, wenn Ihr Stammordner keine Datei enthältCMakeLists.txt. Stattdessen fordert Ein Dialogfeld Sie auf, ob Sie CMake-Funktionalität für Ihr Projekt aktivieren möchten. Wenn Sie ablehnen, wird die CMake-Cachegenerierung nicht gestartet und CMake-Konfigurationen (von CMakeSettings.json oder CMakePresets.json) werden nicht im Konfigurations-Dropdown angezeigt. Wenn Sie akzeptieren, werden Sie zu einer Konfigurationsdatei CMakeWorkspaceSettings.json auf Arbeitsbereichsebene (gespeichert im .vs Verzeichnis) weitergeleitet, um die Ordner anzugeben, für die Sie CMake aktivieren möchten. (Diese Ordner enthalten Ihre Stammdateien CMakeLists.txt ).

Die akzeptierten Eigenschaften sind:

Eigenschaft BESCHREIBUNG
enableCMake Aktivieren Sie die Integration Visual Studio für diesen Arbeitsbereich.
sourceDirectory Eine Zeichenfolge oder ein Array von Zeichenfolgen, die das Verzeichnis oder die Verzeichnisse angeben.CMakeLists.txt Makros (z ${workspaceRoot}. B. ) sind zulässig. Relative Pfade basieren auf dem Arbeitsbereichsstamm. Verzeichnisse außerhalb des aktuellen Arbeitsbereichs werden ignoriert.

Sie können CMakeWorkspaceSettings.json jederzeit über den Befehl "Project>CMake Workspace" Einstellungen Menübefehl erreichen, auch wenn CMake-Funktionalität derzeit deaktiviert ist.

Öffnen eines vorhandenen Caches

Wenn Sie eine vorhandene CMake-Cachedatei ( CMakeCache.txt ) öffnen, versucht Visual Studio nicht, Ihren Cache und die Buildstruktur für Sie zu verwalten. Ihre benutzerdefinierten oder bevorzugten Tools haben die umfassende Kontrolle darüber, wie CMake das Projekt konfiguriert.

Sie können einem geöffneten Projekt einen vorhandenen CMake-Cache hinzufügen. Dies erfolgt auf die gleiche Weise wie das Hinzufügen einer neuen Konfiguration. Weitere Informationen finden Sie in unserem Blogbeitrag zum Öffnen eines vorhandenen Caches in Visual Studio.

Hinweis

Das vorhandene Standardcaching basiert auf cmake-server. Dieses Feature wurde in Version 3.20 aus CMake entfernt. Ergreifen Sie eine der folgenden Maßnahmen, um die Cachingfunktionalität in Visual Studio 2019 16.10 und höher weiterhin zu verwenden:

  • Installieren Sie CMake 3.19 oder niedriger manuell. Legen Sie dann die Eigenschaft cmakeExecutable in Ihrer vorhandenen Cachekonfiguration auf diese Version von CMake fest.
  • Legen Sie in Ihrer vorhandenen Cachekonfiguration die Eigenschaft cacheGenerationCommand fest, damit Visual Studio die erforderlichen dateibasierten API-Dateien für CMake anfordern kann. Weitere Informationen zu dieser Eigenschaft finden Sie in der Referenz zu „CMakeSettings.json“.
  • Verwenden Sie eine Abfragedatei, um die dateibasierten API-Dateien für CMake anzufordern, wenn Sie Ihren Cache generieren, bevor er in Visual Studio geöffnet wird. Anleitungen zu Abfragedateien finden Sie im nächsten Abschnitt, Erweiterte Problembehandlung für den CMake-Cache.

Erweiterte Problembehandlung für den CMake-Cache

Visual Studio verwendet die dateibasierte API von CMake (in Version 3.14 und höher), um den Editor mit Informationen für die jeweilige Projektstruktur zu füllen. Weitere Informationen finden Sie im Blogbeitrag des C++-Teams zu Multi-Root-Arbeitsbereichen und der dateibasierten API.

Vor dem Generieren des CMake-Caches müssen Ihre benutzerdefinierten oder bevorzugten Tools möglicherweise eine Abfragedatei mit dem Namen .cmake/api/v1/query/client-MicrosoftVS/query.json im Buildausgabeordner erstellen (der Ordner, der CMakeCache.txt enthält). Die Abfragedatei sollte diesen Inhalt enthalten:

{"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]}

Wenn Ihre benutzerdefinierten oder bevorzugten Tools den Cache generieren, speichert CMake Dateien unter .cmake/api/v1/response . Diese werden von Visual Studio verwendet, um den Editor mit Informationen für die jeweilige Projektstruktur zu füllen.

Bearbeiten von CMakeLists.txt -Dateien

Wenn Sie eine CMakeLists.txt -Datei bearbeiten möchten, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei, und klicken Sie auf Öffnen. Wenn Sie Änderungen an der Datei vornehmen, wird eine gelbe Statusleiste angezeigt, die Sie darüber informiert, dass IntelliSense ein Update durchführen möchte. Sie haben die Möglichkeit, den Updatevorgang abzubrechen. Weitere Informationen zu CMakeLists.txt finden Sie in der CMake-Dokumentation.

CMakeLists.txt file editing.

Sobald Sie die Datei speichern, wird der Konfigurationsschritt automatisch erneut ausgeführt. Dieser zeigt Informationen im Ausgabefenster an. Fehler und Warnungen werden in der Fehlerliste oder im Ausgabefenster angezeigt. Doppelklicken Sie auf einen Fehler in der Fehlerliste, um zur problematischen Zeile in CMakeLists.txt zu navigieren.

CMakeLists.txt file errors.

Sprachdienste für CMake

Sprachdienste für CMake sind ab Visual Studio 2019, Version 16.5 verfügbar. Es unterstützt Codenavigationsfeatures wie Go To Definition, Peek Definition und Suchen aller Verweise für CMake-Variablen, Funktionen und Ziele in CMake-Skriptdateien. Weitere Informationen finden Sie unter Codenavigation für CMake-Skripts.

Find All References on a CMake variable, target, or function.

CMake-Projektbearbeitung

Die CMake-Projektbearbeitung ist ab Visual Studio 2019, Version 16.5 verfügbar. Mit der Projektbearbeitung können Sie Quelldateien und Ziele in Ihrem CMake-Projekt hinzufügen, entfernen und umbenennen, ohne Ihre CMake-Skripts manuell bearbeiten zu müssen. Wenn Sie Dateien aus dem Projektmappen-Explorer hinzufügen oder entfernen, bearbeitet Visual Studio Ihr CMake-Projekt automatisch. Es könnte mehrere Stellen geben, an denen es sinnvoll ist, einen Verweis auf ein CMake-Skript hinzuzufügen oder zu entfernen. Wenn dies der Sinn ist, fragt Visual Studio Sie, wo Sie die Änderung vornehmen möchten, und zeigt eine Vorschau der vorgeschlagenen Änderungen an. Eine Schritt-für-Schritt-Anleitung finden Sie unter Hinzufügen, Entfernen und Umbenennen von Dateien und Zielen in CMake-Projekten.

Resolving ambiguity with CMake project manipulation.

IntelliSense für CMake-Projekte

Standardmäßig verwendet Visual Studio den IntelliSense-Modus, der der Compiler- und Zielarchitektur entspricht, die von der aktiven CMake-Konfiguration angegeben wird.

Wenn CMakePresets.json Es sich um Ihre aktive CMake-Konfigurationsdatei handelt, können Sie IntelliSense-Optionen mithilfe intelliSenseMode und intelliSenseOptions in der Visual Studio Einstellungen Anbieterzuordnung angeben. Weitere Informationen finden Sie unter Referenz zu den Anbieterzuordnungen in den Visual Studio-Einstellungen.

Wenn CMakeSettings.json es sich um Ihre aktive CMake-Konfigurationsdatei handelt, können Sie IntelliSense-Optionen mithilfe intelliSenseMode von " CMakeSettings.jsonIn" angeben. Weitere Informationen finden Sie in der CMakeSettings.json Referenz.

Konfigurieren von IntelliSense mit CMake-Toolkettendateien

In Visual Studio 2019 Version 16.9 und höher konfiguriert Visual Studio IntelliSense in CMake-Projekten automatisch basierend auf CMake-Variablen, wenn Sie eine CMake-Toolchaindatei verwenden. Weitere Informationen finden Sie unter Konfigurieren von IntelliSense mit CMake-Toolkettendateien.

Vcpkg-Integration

CMake-Projekte, die in Visual Studio geöffnet sind, können mit vcpkg integriert sein, einem plattformübergreifenden C/C++-Abhängigkeits-Manager. Bevor Sie vcpkg mit Visual Studio verwenden, müssen Sie vcpkg integrate install ausführen. Anweisungen und weitere Informationen zu vcpkg finden Sie in der vcpkg-Dokumentation.

Wenn CMakeSettings.json Es sich um Ihre aktive Konfigurationsdatei handelt, übergibt Visual Studio automatisch die vcpkg Toolchaindatei (vcpkg.cmake) an CMake. Dieses Verhalten wird automatisch deaktiviert, wenn Sie eine andere Toolkette in der Konfiguration der CMake-Einstellungen angeben.

Wenn CMakePresets.json es sich um Ihre aktive Konfigurationsdatei handelt, müssen Sie den Pfad auf vcpkg.cmake "in CMakePresets.json" festlegen. Es wird empfohlen, die VCPKG_ROOT-Umgebungsvariable anstelle eines absoluten Pfads zu verwenden, damit die Datei gemeinsam verwendet werden kann. Weitere Informationen finden Sie unter Aktivieren der vcpkg-Integration mit CMake-Voreinstellungen. CMakePresets.jsonist in Visual Studio Version 16.10 oder höher verfügbar und ist die empfohlene CMake-Konfigurationsdatei.

Ausführen von CMake über die Befehlszeile

Wenn CMakePresets.json es sich um Ihre aktive CMake-Konfigurationsdatei handelt, können Sie Ihre lokalen Builds ganz einfach außerhalb von Visual Studio reproduzieren. Weitere Informationen finden Sie unter Ausführen von CMake über die Befehlszeile oder eine CI-Pipeline. CMakePresets.jsonwird in Visual Studio Version 16.10 oder höher in Visual Studio Version 16.10 unterstützt und ist die empfohlene CMake-Konfigurationsdatei.

Wenn CMakeSettings.json Es sich um Ihre aktive CMake-Konfigurationsdatei handelt, müssen Sie die Argumente manuell übergeben, die in Ihrer CMakeSettings.json Datei an CMake codiert sind. Wenn Sie CMake über den Visual Studio-Installer installiert haben, können Sie CMake über die Befehlszeile ausführen, indem Sie die folgenden Schritte ausführen:

  1. Führen Sie die entsprechende Datei vsdevcmd.bat (x86/x64) aus. Weitere Informationen finden Sie unter Erstellen über die Befehlszeile.

  2. Wechseln Sie zu Ihrem Ausgabeordner.

  3. Führen Sie CMake zum Erstellen oder Konfigurieren Ihrer App aus.

Visual Studio 2017 bietet umfangreiche Unterstützung für CMake einschließlich plattformübergreifender CMake-Projekte. Die Komponente Visual C++-Tools für CMake verwendet die Funktion Ordner öffnen, um der IDE die Verwendung von CMake-Projektdateien (z. B. CMakeLists.txt ) direkt für IntelliSense und das Durchsuchen zu ermöglichen. Es werden sowohl Ninja- als auch Visual Studio-Generatoren unterstützt. Wenn Sie einen Visual Studio-Generator verwenden, generiert dieser eine temporäre Projektdatei und übergibt sie an MSBuild. Das Projekt wird jedoch nie für IntelliSense oder zum Durchsuchen geladen. Sie können auch einen vorhandenen CMake-Cache verwenden.

Installation

Die Komponente Visual C++-Tools für CMake wird standardmäßig als Teil der Workloads Desktopentwicklung mit C++ und Linux Entwicklung mit C++ installiert.

Screenshot of the Individual components tab with the Visual C plus plus tools for C make option called out.

Weitere Informationen finden Sie unter Install the C++ Linux workload in Visual Studio (Installieren der C++-Workload unter Linux in Visual Studio).

IDE-Integration

Wenn Sie "Ordner öffnen>" > auswählen, um einen Ordner zu öffnen, der eine CMakeLists.txt Datei enthält, gehen die folgenden Schritte vor:

  • Visual Studio fügt ein CMake-Menüelement zum Hauptmenü hinzu, das Befehle für das Anzeigen und Bearbeiten von CMake-Skripts enthält.

  • Der Projektmappen-Explorer zeigt die Ordnerstruktur und die Dateien an.

  • Visual Studio führt CMake aus und generiert optional den CMake-Cache für die Standardkonfiguration (x86 Debug). Die CMake-Befehlszeile wird im Ausgabefenster zusammen mit weiteren Ausgaben von CMake angezeigt.

  • Im Hintergrund beginnt Visual Studio damit, die Quelldateien zu indizieren, um IntelliSense, das Durchsuchen von Informationen, das Refactoring und vieles mehr zu ermöglichen. Während Sie arbeiten, überwacht Visual Studio die Änderungen im Editor und auf dem Datenträger, damit der Index mit den Quellen synchron ist.

Sie können Ordner öffnen, die eine beliebige Anzahl von CMake-Projekten enthalten. Visual Studio erkennt und konfiguriert alle CMakeLists.txt -Stammdateien in Ihrem Arbeitsbereich. CMake-Vorgänge (Konfigurieren, Erstellen, Debuggen), IntelliSense für C++ und das Durchsuchen sind für alle CMake-Projekte in Ihrem Arbeitsbereich verfügbar.

CMake project with multiple roots.

Sie können die Projekte auch logisch strukturiert nach Zielen anzeigen. Wählen Sie in der Dropdownliste der Symbolleiste des Projektmappen-Explorers die Option Zielansicht aus:

CMake targets view button.

Visual Studio verwendet die Datei CMakeSettings.json zum Speichern von Umgebungsvariablen oder Befehlszeilenoptionen für CMake. CMakeSettings.json ermöglicht außerdem das Definieren und Speichern mehrerer CMake-Buildkonfigurationen. Sie können in der IDE bequem zwischen ihnen wechseln.

Verwenden Sie CMakeLists.txt andernfalls einfach wie in jedem anderen CMake-Projekt zum Angeben von Quelldateien, Suchen von Bibliotheken, Festlegen von Compiler- und Linkeroptionen sowie zum Angeben weiterer Informationen zum Buildsystem.

Wenn Sie beim Debuggen Argumente an eine ausführbare Datei übergeben müssen, können Sie eine andere Datei mit dem Namen launch.vs.json verwenden. In einigen Szenarios werden diese Dateien von Visual Studio automatisch generiert. Sie können sie manuell bearbeiten oder sogar die Datei selbst erstellen.

Hinweis

Für andere Arten von „Ordner öffnen“-Projekten werden zwei zusätzliche JSON-Dateien verwendet: CppProperties.json und tasks.vs.json. Diese sind für CMake-Projekte jedoch nicht relevant.

Importieren eines vorhandenen Caches

Wenn Sie eine vorhandene CMakeCache.txt -Datei importieren, extrahiert Visual Studio benutzerdefinierte Variablen automatisch und erstellt die vorab aufgefüllte Datei CMakeSettings.json , die auf diesen basiert. Der ursprüngliche Cache wird in keiner Weise geändert. Er kann weiterhin über die Befehlszeile oder mit einem beliebigen Tool oder der IDE verwendet werden, die zum Generieren verwendet werden. Die neue CMakeSettings.json Datei wird neben dem Stamm CMakeLists.txtdes Projekts platziert. Visual Studio generiert einen neuen Cache, der auf der Einstellungsdatei basiert. Sie können die automatische Cachegenerierung im Dialogfeld "Extras Optionen >> CMake Allgemein" > außer Kraft setzen.

Nicht der gesamte Inhalt des Caches wird importiert. Eigenschaften wie der Generator und der Speicherort des Compilers werden durch die Standardwerte ersetzt, die in der IDE bekanntermaßen funktionieren.

Importieren eines vorhandenen Caches

  1. Wählen Sie im Hauptmenü " Datei > öffnen > " CMake aus:

    Open CMake.

    Mit diesem Befehl wird der Assistent CMake-Projekt aus Cache importieren gestartet.

  2. Navigieren Sie zur Datei CMakeCache.txt , die Sie importieren möchten, und klicken Sie dann auf OK. Der Assistent CMake-Projekt aus Cache importieren wird angezeigt:

    Import a CMake cache.

    Wenn der Assistent abgeschlossen ist, wird die neue Datei CMakeCache.txt im Projektmappen-Explorer neben der CMakeLists.txt -Stammdatei in Ihrem Projekt geöffnet.

Erstellen von CMake-Projekten

Folgende Optionen stehen Ihnen zum Erstellen eines CMake-Projekts zur Verfügung:

  1. Suchen Sie auf der Symbolleiste „Allgemein“ nach dem Dropdownmenü Konfigurationen. Es wird wahrscheinlich standardmäßig „Linux-Debug“ oder „x64-Debug“ angezeigt. Klicken Sie auf die bevorzugte Konfiguration, und drücken Sie F5 oder klicken Sie auf der Symbolleiste auf die Schaltfläche Ausführen (grünes Dreieck). Das Projekt wird genau wie eine Visual Studio-Projektmappe zunächst erstellt.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf CMakeLists.txt , und klicken Sie dann im Kontextmenü auf Erstellen. Wenn mehrere Ziele in Ihrer Ordnerstruktur vorhanden sind, können Sie auswählen, den Build für alle oder nur für ein bestimmtes Ziel durchzuführen.

  3. Wählen Sie im Hauptmenü die Option Buildmappe > (F7 oder STRG+UMSCHALT+B) aus. Stellen Sie sicher, dass ein CMake-Ziel bereits in der Dropdownliste Startelement auf der Symbolleiste Allgemein ausgewählt ist.

CMake build menu command.

Sie können Buildkonfigurationen, Umgebungsvariablen, Befehlszeilenargumente und andere Einstellungen in der Datei CMakeSettings.json anpassen. Sie können Änderungen vornehmen, ohne die Datei CMakeLists.txt zu ändern. Weitere Informationen finden Sie unter Customize CMake settings (Anpassen von CMake-Einstellungen).

Erwartungsgemäß werden die Buildergebnisse im Ausgabefenster und in der Fehlerliste angezeigt.

CMake build errors.

In einem Ordner mit mehreren Buildzielen können Sie angeben, welches CMake-Ziel erstellt werden soll: Wählen Sie das Element Erstellen im Menü CMake oder das Kontextmenü von CMakeLists.txt aus, um das Ziel anzugeben. Wenn Sie in einem CMake-Projekt STRG+UMSCHALT+B drücken, wird das derzeit aktive Dokument erstellt.

Debuggen von CMake-Projekten

Wenn Sie ein CMake-Projekt debuggen möchten, wählen Sie die gewünschte Konfiguration aus, und drücken Sie F5. Alternativ können Sie auf die Schaltfläche Ausführen auf der Symbolleiste klicken. Wenn die Schaltfläche Ausführen „Startelement auswählen“ anzeigt, klicken Sie auf den Dropdownpfeil, und wählen Sie das Ziel aus, das ausgeführt werden soll. (In einem CMake-Projekt ist die Option „Aktuelles Dokument“ nur für CPP-Dateien gültig.)

CMake run button.

Durch Ausführen oder F5 wird das Projekt zunächst erstellt, wenn seit dem vorherigen Build Änderungen vorgenommen wurden.

Sie können eine CMake-Debugsitzung durch Festlegen von Eigenschaften in der Datei launch.vs.json anpassen. Weitere Informationen finden Sie unter Configure CMake debugging sessions (Konfigurieren von CMake-Debugsitzungen).

Bearbeiten von CMakeLists.txt -Dateien

Wenn Sie eine CMakeLists.txt -Datei bearbeiten möchten, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei, und klicken Sie auf Öffnen. Wenn Sie Änderungen an der Datei vornehmen, wird eine gelbe Statusleiste angezeigt, die Sie darüber informiert, dass IntelliSense ein Update durchführen möchte. Sie haben die Möglichkeit, den Updatevorgang abzubrechen. Weitere Informationen zu CMakeLists.txt finden Sie in der CMake-Dokumentation.

CMakeLists.txt file editing.

Sobald Sie die Datei speichern, wird der Konfigurationsschritt automatisch erneut ausgeführt. Dieser zeigt Informationen im Ausgabefenster an. Fehler und Warnungen werden in der Fehlerliste oder im Ausgabefenster angezeigt. Doppelklicken Sie auf einen Fehler in der Fehlerliste, um zur problematischen Zeile in CMakeLists.txt zu navigieren.

CMakeLists.txt file errors.

CMake-Konfigurationsschritt

Wenn erhebliche Änderungen an den CMakeSettings.json Dateien vorgenommen CMakeLists.txt werden, Visual Studio den CMake-Konfigurationsschritt automatisch erneut ausführen. Wenn der Konfigurationsschritt ohne Fehler abgeschlossen wird, sind die gesammelten Informationen in IntelliSense für C++ und den Sprachdiensten verfügbar. Er wird auch in Erstellungs- und Debugvorgängen verwendet.

Mehrere CMake-Projekte verwenden möglicherweise denselben CMake-Konfigurationsnamen (z. B. „x86-Debug“). Wenn diese Konfiguration ausgewählt ist, werden diese (in ihrem eigenen Buildstammordner) konfiguriert und erstellt. Sie können die Ziele aller CMake-Projekte debuggen, die in dieser CMake-Konfiguration enthalten sind.

CMake Build Only menu item.

Sie können Build- und Debugsitzungen auf eine Teilmenge der Projekte im Arbeitsbereich beschränken. Erstellen Sie eine neue Konfiguration mit einem eindeutigen Namen in der CMakeSettings.json Datei. Wenden Sie die Konfiguration dann nur auf diese Projekte an. Wenn diese Konfiguration ausgewählt ist, werden IntelliSense und die Build- und Debugbefehle nur für die angegebenen Projekte angewendet.

Behandlung von CMake-Cachefehlern

Wenn Sie weitere Informationen zum Status des CMake-Caches benötigen, um ein Problem zu diagnostizieren, öffnen Sie das Hauptmenü CMake oder das Kontextmenü von CMakeLists.txt im Projektmappen-Explorer, um einen der folgenden Befehle auszuführen:

  • Der Ansichtscache öffnet die CMakeCache.txt Datei aus dem Buildstammordner im Editor. (Alle Hier vorgenommenen CMakeCache.txt Änderungen werden gelöscht, wenn Sie den Cache bereinigen. Informationen zum Vornehmen von Änderungen, die nach dem Bereinigen des Caches beibehalten werden, finden Sie unter Anpassen von CMake-Einstellungen.)

  • Cacheordner öffnen öffnet ein Explorer-Fenster zum Stammordner des Builds.

  • Cache bereinigen löscht den Stammordner des Builds, sodass der nächste CMake-Konfigurationsschritt mit einem leeren Cache beginnt.

  • Cache generieren erzwingt die Ausführung des Schritts „Generieren“, auch wenn Visual Studio die Umgebung für aktuell hält.

Die automatische Cachegenerierung kann im Dialogfeld "Extras > optionen > " "CMake > Allgemein " deaktiviert werden.

Kompilierung einzelner Dateien

Klicken Sie zum Erstellen einer einzelnen Datei in einem CMake-Projekt im Projektmappen-Explorer mit der rechten Maustaste auf die Datei. Klicken Sie im Popupmenü auf Kompilieren. Sie können die derzeit im Editor geöffnete Datei auch über das CMake-Hauptmenü erstellen:

CMake single file compilation.

Ausführen von CMake über die Befehlszeile

Wenn Sie CMake über den Visual Studio-Installer installiert haben, können Sie CMake über die Befehlszeile ausführen, indem Sie die folgenden Schritte ausführen:

  1. Führen Sie die entsprechende Datei vsdevcmd.bat (x86/x64) aus. Weitere Informationen finden Sie unter Erstellen über die Befehlszeile.

  2. Wechseln Sie zu Ihrem Ausgabeordner.

  3. Führen Sie CMake zum Erstellen oder Konfigurieren Ihrer App aus.

In Visual Studio 2015 können Visual Studio-Benutzer einen CMake-Generator verwenden, um MSBuild-Projektdateien zu generieren, die anschließend von der IDE für IntelliSense sowie für das Durchsuchen und die Kompilierung verwendet werden.

Siehe auch

Tutorial: Erstellen plattformübergreifender C++-Projekte in Visual Studio
Konfigurieren eines Linux CMake-Projekts
Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer
Anpassen von CMake-Buildeinstellungen
CMakeSettings.json-Schemareferenz
Konfigurieren von CMake-Debugsitzungen
Bereitstellen, Ausführen und Debuggen Ihres Linux-Projekts
CMake predefined configuration reference (Referenz für vordefinierte CMake-Konfigurationen)