Freigeben über


Exemplarische Vorgehensweise: Erstellen und Debuggen von C++ mit WSL 2 und Visual Studio 2022

Visual Studio 2022 führt ein systemeigenes C++-Toolset für die Entwicklung von Windows-Subsystem für Linux Version 2 (WSL 2) ein. Dieses Toolset ist jetzt in Visual Studio 2022, Version 17.0 oder höher, verfügbar.

WSL 2 ist die neue, empfohlene Version des Windows-Subsystem für Linux (WSL). Sie bietet eine bessere Linux-Dateisystemleistung, GUI-Unterstützung und vollständige Kompatibilität von Systemaufrufen. Mit dem WSL 2-Toolset von Visual Studio können Sie Visual Studio zum Erstellen und Debuggen von C++-Code auf WSL 2-Distros verwenden, ohne eine SSH-Verbindung hinzuzufügen. Sie können bereits C++-Code auf WSL 1-Distributionen erstellen und debuggen, indem Sie das in Visual Studio 2019 Version 16.1 eingeführte native WSL 1 Toolset verwenden.

das WSL 2-Toolset von Visual Studio unterstützt sowohl CMake- als auch MSBuild-basierte Linux-Projekte. CMake ist unsere Empfehlung für die plattformübergreifende C++-Entwicklung mit Visual Studio. Wir empfehlen CMake, weil es dasselbe Projekt auf Windows, WSL und Remotesystemen erstellt und debuggt.

Eine Videopräsentation der Informationen in diesem Thema finden Sie unter Video: Debuggen von C++ mit WSL 2 Distributionen und Visual Studio 2022.

Hintergrund des WSL 2-Toolsets

Plattformübergreifende C++-Unterstützung in Visual Studio davon ausgeht, dass alle Quelldateien aus dem Windows Dateisystem stammen. Beim Zielen auf eine WSL 2-Distro führt Visual Studio einen lokalen rsync-Befehl aus, um Dateien aus dem Windows-Dateisystem in das WSL-Dateisystem zu kopieren. Für die lokale rsync-Kopie ist kein Benutzereingriff erforderlich. Er erfolgt automatisch, wenn Visual Studio erkennt, dass Sie eine WSL 2-Distro verwenden. Weitere Informationen zu den Unterschieden zwischen WSL 1 und WSL 2 finden Sie unter Vergleich von WSL 1 und WSL 2.

Die Integration von CMake Presets in Visual Studio unterstützt das WSL 2-Toolset. Weitere Informationen finden Sie unter CMake Presets integration in Visual Studio und Visual Studio Code und Configure and build with CMake Presets in Visual Studio. In diesem Artikel finden Sie auch erweiterte Informationen unter Überlegungen zu erweiterten WSL 2- und CMake-Projekten.

Installieren der Buildtools

Installieren Sie die Tools, die zum Kompilieren und Debuggen unter WSL 2 erforderlich sind. Sie installieren eine aktuelle Version von CMake mithilfe der binären CMake-Bereitstellung von Visual Studio in einem späteren Schritt.

  1. Installieren Sie WSL und eine WSL 2-Distribution, indem Sie die Anweisungen unter Installieren von WSL befolgen.

  2. Überprüfen Sie im Visual Studio Installer, ob C++-CMake-Tools für Linux installiert ist. Wählen Sie dazu Modify für Ihre Version von Visual Studio aus. Suchen Sie auf der Registerkarte "Einzelne Komponenten " nach C++-CMake-Tools für Linux und Mac , und stellen Sie sicher, dass sie ausgewählt und installiert ist. Diese Komponente ist für Visual Studio erforderlich, um Ihre WSL-Installationen zu erkennen.

  3. Wenn Ihre Distribution apt verwendet (in dieser Anleitung wird Ubuntu verwendet), verwenden Sie die folgenden Befehle, um die erforderlichen Buildtools auf Ihrer WSL 2-Distribution zu installieren:

    sudo apt update
    sudo apt install cmake g++ gdb make ninja-build rsync zip
    

    Welche Installationen werden installiert:

    • einen C++-Compiler
    • gdb
    • CMake
    • rsync
    • zip
    • zugrunde liegender Build-System-Generator

Plattformübergreifende CMake-Entwicklung mit einer WSL 2-Distribution

In dieser Anleitung werden GCC und Ninja auf Ubuntu verwendet. Und Visual Studio 2022, Version 17.0 Preview 2 oder höher.

Visual Studio definiert ein CMake-Projekt als Ordner mit einer CMakeLists.txt-Datei im Projektstamm. In dieser Schritt-für-Schritt-Anleitung erstellen Sie ein neues CMake-Projekt mithilfe der Visual Studio-Vorlage CMake Project:

  1. Wählen Sie auf dem Bildschirm Visual Studio Get startedCreate a new project aus.

    Screenshot des Dialogfelds Visual Studio 2022 Die verfügbaren Optionen sind: Klonen eines Repositorys, Öffnen eines Projekts oder einer Lösung, Öffnen eines lokalen Ordners, Erstellen eines neuen Projekts oder Fortfahren ohne Code.":::

  2. Geben Sie im Textfeld Nach Vorlagen suchen den Text „cmake“ ein. Wählen Sie CMake Projecttyp aus, und wählen Sie Next aus. Wählen Sie einen Namen und einen Speicherort für das Projekt aus, und klicken Sie dann auf Erstellen.

  3. Aktivieren Sie die CMake Presets-Integration von Visual Studio. Wählen Sie Tools>Optionen>CMake>Allgemein aus. Wählen Sie Verwendung von CMake-Voreinstellungen zum Konfigurieren, Kompilieren und Testen bevorzugen aus, und klicken Sie dann auf OK. Alternativ können Sie dem Stammverzeichnis des Projekts eine CMakePresets.json Datei hinzufügen. Weitere Informationen finden Sie unter Aktivieren der CMake-Voreinstellungsintegration.

    Screenshot der Visual Studio-Projektoptionen. CMake > Allgemein ist ausgewählt.

    In der CMake-Konfigurationsdateigruppe wird "CMake Presets verwenden, falls verfügbar, andernfalls CMakeSettings.json verwenden" hervorgehoben und ausgewählt.

  4. So aktivieren Sie die Integration: Wählen Sie im Hauptmenü Datei>Ordner schließen aus. Die Seite Erste Schritte wird angezeigt. Wählen Sie unter Zuletzt verwendete öffnen den Ordner aus, den Sie gerade geschlossen haben, um ihn wieder zu öffnen.

  5. Es gibt drei Dropdowns in der Visual Studio Hauptmenüleiste. Verwenden Sie das Dropdownmenü auf der linken Seite, um Ihr aktives Zielsystem auszuwählen. Dies ist das System, auf dem CMake zum Konfigurieren und Kompilieren des Projekts aufgerufen wird. Visual Studio Abfragen für WSL-Installationen mit wsl -l -v. In der folgenden Abbildung wird WSL2: Ubuntu-20.04 als ausgewähltes Zielsystem angezeigt.

    Screenshot der Visual Studio Dropdownliste für das Zielsystem. WSL2: Ubuntu-20.04 ist ausgewählt.

    Hinweis

    Wenn Visual Studio beginnt, Ihr Projekt automatisch zu konfigurieren, lesen Sie Schritt 11, um die binäre CMake-Bereitstellung zu verwalten, und fahren Sie dann mit dem folgenden Schritt fort. Weitere Informationen zum ändern dieses Verhaltens finden Sie unter Ändern der automatischen Konfiguration und der Cachebenachrichtigungen.

  6. Verwenden Sie das Dropdownmenü in der Mitte, um Ihre aktive Konfigurationsvoreinstellung auszuwählen. Konfigurationsvoreinstellungen weisen Visual Studio an, wie CMake aufgerufen und das zugrunde liegende Buildsystem generiert werden. In Schritt 7 ist die aktive konfigurierte Voreinstellung die linux-default-Voreinstellung, die von Visual Studio erstellt wurde. Wählen Sie "Konfigurationen verwalten..." aus, um eine benutzerdefinierte Voreinstellung zu erstellen. Weitere Informationen zum Konfigurieren von Voreinstellungen finden Sie unter "Konfigurieren von Voreinstellungen auswählen" und "Voreinstellungen bearbeiten".

    Screenshot des aktiven Konfigurationsvoreinstellung-Dropdowns von Visual Studio.

  7. Verwenden Sie das Dropdownmenü rechts, um Ihr aktives Build-Preset auszuwählen. Build-Voreinstellungen definieren in Visual Studio, wie ein Build aufgerufen wird. In der Abbildung für Schritt 7 ist die aktive Build-Voreinstellung die von Visual Studio erstellte Default Buildvorlage. Weitere Informationen zu Buildvoreinstellungen finden Sie unter Auswählen einer Buildvoreinstellung.

  8. Konfigurieren Sie das Projekt unter WSL 2. Wenn die Projektgenerierung nicht automatisch startet, rufen Sie manuell mit Project>Configureproject-name konfigurieren auf.

    Screenshot des Dropdown-Menüs zur Konfiguration des Visual Studio-Projekts. CMakeProject ist ausgewählt.

  9. Wenn Sie keine unterstützte Version von CMake auf Ihrer WSL 2 Distribution installiert haben, fordert Sie Visual Studio unter dem Menüband des Hauptmenüs auf, eine aktuelle Version von CMake zu installieren. Wählen Sie Ja aus, um CMake-Binärdateien für Ihre WSL 2-Distribution bereitzustellen.

    Screenshot einer Eingabeaufforderung unter der Symbolleiste Visual Studio

    Der Benutzer wird aufgefordert, ob er die neuesten C Make-Binärdateien von C make installieren soll. org, da die unterstützte C Make Version nicht installiert ist."

  10. Vergewissern Sie sich, dass der Konfigurationsschritt abgeschlossen wurde und dass im Fenster Ausgabe im Bereich CMake die Meldung CMake-Generierung abgeschlossen angezeigt wird. Builddateien werden in ein Verzeichnis im Dateisystem der WSL 2-Distribution geschrieben.

    Screenshot des Visual-Studio-Ausgabefensters. Es enthält Nachrichten, die während des Konfigurationsschrittes generiert werden, einschließlich der Fertigstellung der CMake-Generierung.

  11. Wählen Sie das aktive Debugziel aus. Im Dropdownmenü „Debuggen“ werden alle CMake-Ziele aufgeführt, die für das Projekt verfügbar sind.

    Screenshot des Debug-Dropdownmenüs von Visual Studio. CMakeProject ist ausgewählt.

  12. Erweitern Sie den Projektunterordner im Projektmappen-Explorer. Legen Sie in der CMakeProject.cpp-Datei einen Breakpoint in main() fest. Sie können auch zur Ansicht "CMake-Ziele" navigieren, indem Sie die Schaltfläche "Ansichtsauswahl" in der Projektmappen-Explorer auswählen, die im folgenden Screenshot hervorgehoben ist:

    Screenshot des Visual Studio Projektmappen-Explorers mit der Schaltfläche zum Wechseln von Ansichten. Sie befindet sich rechts neben der Startschaltfläche.

  13. Wählen Sie Debuggen>Start aus, oder drücken Sie F5. Ihr Projekt wird erstellt, die ausführbare Datei wird auf Ihrer WSL 2-Distro gestartet, und Visual Studio stoppt die Ausführung am Haltepunkt. Die Ausgabe Ihres Programms (in diesem Fall "Hello CMake.") ist im Linux-Konsolenfenster sichtbar:

    Screenshot eines laufenden Hello World-Programms.

    Das Visual Studio Linux-Konsolenfenster zeigt die Ausgabe des Programms an: "Hello C Make". Das Editorfenster zeigt das Hello World-Programm an. Die Ausführung wurde an einem Haltepunkt in der Zeile angehalten, die "return 0;" enthält.

Sie haben nun eine C++-App mit WSL 2 und Visual Studio 2022 erstellt und gedebuggt.

Überlegungen zu erweiterten WSL 2- und CMake-Projekten

Visual Studio bietet nur native Unterstützung für WSL 2 für CMake-Projekte, die CMakePresets.json als aktive Konfigurationsdatei verwenden. Informationen zum Migrieren von CMakeSettings.json zu CMakePresets.json finden Sie unter Enable CMake Presets Integration in Visual Studio.

Wenn Sie auf eine WSL 2-Distribution abzielen und das WSL 2-Toolset nicht verwenden möchten, legen Sie forceWSL1Toolset in der Visual-Studio-Remoteeinstellungsanbieterzuordnung auf true fest. Weitere Informationen finden Sie unter Visual Studio Remote Settings Vendor Map.

Wenn forceWSL1Tooslet auf true festgelegt ist, verwaltet Visual Studio keine Kopie Ihrer Quelldateien im WSL-Dateisystem. Stattdessen greift sie auf Quelldateien im bereitgestellten Windows Laufwerk (/mnt/...) zu.

In den meisten Fällen empfiehlt es sich, das WSL 2-Toolset mit WSL 2-Verteilungen zu verwenden, da WSL 2 langsamer ist, wenn Projektdateien stattdessen im Windows Dateisystem gespeichert werden. Weitere Informationen zur Dateisystemleistung in WSL 2 finden Sie unter Vergleich von WSL 1 und WSL 2.

Geben Sie erweiterte Einstellungen wie den Pfad zum Verzeichnis in WSL 2 an, in das das Projekt kopiert wird, die Quelloptionen kopieren und die rsync-Befehlsargumente in der Visual Studio Remoteeinstellungsanbieterzuordnung in CMakePresets.json. Weitere Informationen finden Sie unter Visual Studio Remote Settings Vendor Map.

Systemheader werden weiterhin automatisch in das Windows Dateisystem kopiert, um die systemeigene IntelliSense-Oberfläche bereitzustellen. Sie können die Kopfzeilen anpassen, die in dieser Kopie enthalten oder aus dieser Kopie ausgeschlossen sind, in der Visual Studio Remoteeinstellungen-Lieferantenzuordnung in CMakePresets.json.

Sie können den IntelliSense-Modus ändern oder andere IntelliSense-Optionen in der Visual Studio Einstellungsanbieterzuordnung in CMakePresets.json angeben. Ausführliche Informationen zur Anbieterkarte finden Sie unter Visual Studio Remote-Einstellungen-Anbieterkartierung.

Auf WSL 2- und MSBuild-basierende Linux-Projekte

CMake wird für alle plattformübergreifenden C++-Entwicklung mit Visual Studio empfohlen, da es Ihnen ermöglicht, dasselbe Projekt auf Windows-, WSL- und Remotesystemen zu erstellen und zu debuggen.

Möglicherweise verfügen Sie jedoch über ein MSBuild-basiertes Linux-Projekt.

Wenn Sie über ein MSBuild-basiertes Linux-Projekt verfügen, können Sie ein Upgrade auf das WSL 2-Toolset in Visual Studio durchführen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie dann "Eigenschaften>: Allgemeine>Plattformtoolset" aus:

Screenshot eines Visual Studio-Dropdowns mit ausgewähltem Plattform-Toolset und rechts ein weiteres Dropdown mit ausgewähltem WSL2-Toolset.

Wenn Sie auf eine WSL 2-Verteilung abzielen und das WSL 2-Toolset nicht verwenden möchten, wählen Sie dann im Dropdownmenü Platform Toolset den GCC für Windows-Subsystem für Linux oder Clang für Windows-Subsystem für Linux Toolset aus. Wenn eine dieser Toolsets ausgewählt ist, verwaltet Visual Studio keine Kopie Ihrer Quelldateien im WSL-Dateisystem und greift stattdessen auf Quelldateien über das bereitgestellte Windows Laufwerk (/mnt/...) zu. Systemheader werden weiterhin automatisch in das Windows Dateisystem kopiert, um eine systemeigene IntelliSense-Oberfläche bereitzustellen. Passen Sie die Header, die in dieser Kopie eingeschlossen oder ausgeschlossen werden, in Eigenschaftenseiten>Allgemein an.

In den meisten Fällen empfiehlt es sich, das WSL 2-Toolset mit WSL 2-Verteilungen zu verwenden, da WSL 2 langsamer ist, wenn Projektdateien im Windows Dateisystem gespeichert werden. Weitere Informationen finden Sie unter Vergleich von WSL 1 und WSL 2.

Siehe auch

Video: Debuggen von C++ mit WSL 2-Verteilungen und Visual Studio 2022
Download Visual Studio 2022
Create a CMake Linux project in Visual Studio
Tutorial: Debuggen eines CMake-Projekts auf einem Remote Windows computer