Genomgång: Skapa och felsöka C++ med WSL 2 och Visual Studio 2022

Visual Studio 2022 introducerar en inbyggd C++-verktygsuppsättning för utveckling av Podsystém Windowsu pre Linux version 2 (WSL 2). Den här verktygsuppsättningen är nu tillgänglig i Visual Studio 2022 version 17.0 eller senare.

WSL 2 är den nya, rekommenderade versionen av Podsystém Windowsu pre Linux (WSL). Det ger bättre Prestanda för Linux-filsystem, GUI-stöd och fullständig systemanropskompatibilitet. Visual Studio WSL 2-verktygsuppsättningen kan du använda Visual Studio för att skapa och felsöka C++-kod på WSL 2-distributioner utan att lägga till en SSH-anslutning. Du kan redan skapa och felsöka C++-kod på WSL 1-distributioner med hjälp av den inbyggda verktygsuppsättningen WSL 1 som introducerades i Visual Studio 2019 version 16.1.

Visual Studio WSL 2-verktyg har stöd för både CMake- och MSBuild-baserade Linux-projekt. CMake är vår rekommendation för all C++ plattformsoberoende utveckling med Visual Studio. Vi rekommenderar CMake eftersom det skapar och felsöker samma projekt på Windows, WSL och fjärrsystem.

En videopresentation av informationen i det här avsnittet finns i Video: FelsökA C++ med WSL 2-distributioner och Visual Studio 2022.

Bakgrund för WSL 2-verktygsuppsättning

C++ plattformsoberoende stöd i Visual Studio förutsätter att alla källfiler kommer från Windows filsystemet. När du riktar in dig på en WSL 2-distribution kör Visual Studio ett lokalt rsync-kommando för att kopiera filer från Windows filsystemet till WSL-filsystemet. Den lokala rsync kopian kräver inga användaråtgärder. Det sker automatiskt när Visual Studio identifierar att du använder en WSL 2-distribution. Mer information om skillnaderna mellan WSL 1 och WSL 2 finns i Jämföra WSL 1 och WSL 2.

CMake Presets-integrering i Visual Studio stöder WSL 2-verktygsuppsättningen. För mer information, se CMake Presets integration i Visual Studio och Visual Studio Code och Konfigurera och bygg med CMake Presets i Visual Studio. Det finns också mer avancerad information i den här artikeln under överväganden för Advanced WSL 2- och CMake-projekt.

Installera byggverktygen

Installera de verktyg som krävs för att skapa och felsöka på WSL 2. Du installerar en ny version av CMake med Visual Studios CMake-binärdistribution i ett senare steg.

  1. Installera WSL och en WSL 2-distribution genom att följa anvisningarna i Installera WSL.

  2. I installationsprogrammet för Visual Studio kontrollerar du att C++ CMake-verktyg för Linux är installerat. Det gör du genom att välja Modify för din version av Visual Studio. Under fliken Enskilda komponenter söker du efter C++ CMake-verktyg för Linux och Mac och kontrollerar att de är valda och installerade. Den här komponenten krävs för att Visual Studio ska kunna identifiera dina WSL-installationer.

  3. Om du antar att din distribution använder apt (den här genomgången använder Ubuntu) använder du följande kommandon för att installera de nödvändiga byggverktygen i WSL 2-distributionen:

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

    Vilka installationer:

    • En C++-kompilator
    • gdb
    • CMake
    • rsync
    • zip
    • En underliggande byggsystemgenerator

Plattformsoberoende CMake-utveckling med en WSL 2-distribution

Den här genomgången använder GCC och Ninja på Ubuntu. Och Visual Studio 2022 version 17.0 Preview 2 eller senare.

Visual Studio definierar ett CMake-projekt som en mapp med en CMakeLists.txt-fil i projektroten. I den här genomgången skapar du en ny CMake-project med hjälp av mallen Visual Studio CMake Project:

  1. På skärmen Visual Studio Get started väljer du Skapa ett nytt projekt.

    Skärmbild av dialogrutan Visual Studio 2022 komma igång. De tillgängliga alternativen är: Klona en lagringsplats, Öppna ett projekt eller en lösning, Öppna en lokal mapp, Skapa ett nytt projekt eller Fortsätt utan kod.":::

  2. I textrutan Sök efter mallar skriver du "cmake". Välj typen CMake Project och välj Nästa. Ge projektet ett namn och en plats och välj sedan Skapa.

  3. Aktivera integrering av Visual Studio CMake Presets. Välj Verktyg>Alternativ>CMake>Allmänt. Välj Föredrar att använda CMake-förinställningar för att konfigurera, skapa och testa och välj sedan OK. Du kan också lägga till en CMakePresets.json fil i projektets rot. Mer information finns i Aktivera CMake Presets-integrering.

    Skärmbild av Visual Studio projektalternativ. Cmake > Allmänt har valts.

    I CMake-konfigurationsfilgruppen "Använd CMake-förinställningar om det är tillgängligt, annars används CMakeSettings.json" är markerad och vald.

  4. Aktivera integreringen: på huvudmenyn väljer du Arkiv>stäng mapp. Sidan Kom igång visas. Under Öppna senaste väljer du den mapp som du precis stängde för att öppna mappen igen.

  5. Det finns tre listrutor i Visual Studio huvudmenyfältet. Använd listrutan till vänster för att välja ditt aktiva målsystem. Det här är det system där CMake anropas för att konfigurera och skapa projektet. Visual Studio frågar efter WSL-installationer med wsl -l -v. I följande bild visas WSL2: Ubuntu-20.04 vald som målsystem.

    Skärmbild av listrutan för Visual Studio målmiljö. WSL2: Ubuntu-20.04 är vald.

    Anmärkning

    Om Visual Studio börjar konfigurera projektet automatiskt läser du steg 11 för att hantera binär CMake-distribution och fortsätter sedan till följande steg. Information om hur du anpassar det här beteendet finns i Ändra automatiska konfigurations- och cachemeddelanden.

  6. Använd listrutan i mitten för att välja din aktiva Konfigurera förinställning. Konfigurera förinställningarna anger för Visual Studio hur du anropar CMake och bygger det underliggande byggsystemet. I steg 7 är den aktiva förinställningen för konfiguration linux-default-förinställningen som skapats av Visual Studio. Om du vill skapa en anpassad konfigurerad förinställning väljer du Hantera konfigurationer... Mer information om Att konfigurera förinställningar finns i Välj en konfigurera förinställning och redigera förinställningar.

    Skärmbild av listrutan för den aktiva konfigurationsförinställningen i Visual Studio. Hantera konfigurationer... är vald.

  7. Använd listrutan till höger för att välja din aktiva build-förinställning. Byggförinställningar anger för Visual Studio hur byggprocessen anropas. I bilden för steg 7 är den aktiva build-förinställningen Default Build Preset som skapats av Visual Studio. Mer information om build-förinställningar finns i Välj en byggförinställning.

  8. Konfigurera projektet på WSL 2. Om projektgenerering inte startar automatiskt, anropar du manuellt Configure med Project>Configureproject-name

    Skärmbild av listrutan för att konfigurera Visual Studio-projekt. Konfigurera CMakeProject är vald.

  9. Om du inte har en version av CMake som stöds installerad på din WSL 2-distribution uppmanar Visual Studio dig under menyfliksområdet att distribuera en ny version av CMake. Välj Ja för att distribuera CMake-binärfiler till din WSL 2-distribution.

    Skärmbild av en fråga under verktygsfältet i Visual Studio

    Användaren uppmanas att installera de senaste C Make-binärfilerna från C make . org eftersom C Make-versionen som stöds inte är installerad."

  10. Bekräfta att konfigurationssteget har slutförts och att du kan se meddelandet om att CMake-generationen har slutförts i fönstret Utdata under CMake-fönstret . Byggfiler skrivs till en katalog i WSL 2-distributionens filsystem.

    Skärmbild av fönstret Visual Studio Utdata. Den innehåller meddelanden som genereras under konfigurationssteget, inklusive att C Make-genereringen är klar.

  11. Välj det aktiva felsökningsmålet. I felsökningslistrutan visas alla CMake-mål som finns tillgängliga för projektet.

    Skärmbild av listrutan Visual Studio felsökning. CMakeProject är vald.

  12. Expandera projektundermappen i Prieskumník riešení. Sätt en brytpunkt i CMakeProject.cpp i main()-filen. Du kan också navigera till CMake-målvy genom att välja knappen Visningsväljare i Prieskumník riešení, markerad i följande skärmbild.

    Skärmbild av Visual Studio lösningsutforskaren som visar knappen för att växla vyer. Den finns till höger om hemknappen.

  13. Välj Felsök>Start eller tryck på F5. Projektet byggs, exekverbart program startar i din WSL 2-miljö och Visual Studio stoppar körningen när brytpunkt nås. Utdata från programmet (i det här fallet "Hello CMake.") visas i Linux-konsolfönstret:

    Skärmbild av ett hello world-program som körs.

    I Visual Studio Linux-konsolfönstret visas programmets utdata: "Hello C Make". Redigeringsfönstret visar hello world-programmet. Körningen stoppades vid en brytpunkt på raden med return 0;.

Nu har du skapat och debuggat en C++-app med WSL 2 och Visual Studio 2022.

Överväganden för avancerade WSL 2- och CMake-projekt

Visual Studio ger endast internt stöd för WSL 2 för CMake-projekt som använder CMakePresets.json som aktiv konfigurationsfil. Information om hur du migrerar från CMakeSettings.json till CMakePresets.json finns i Enable CMake Presets integration in Visual Studio.

Om du riktar in dig på en WSL 2-distribution och inte vill använda WSL 2-verktygsuppsättningen, anger du i Visual Studio Remote-inställningarnas leverantörskarta inom CMakePresets.json, forceWSL1Toolset till true. Mer information finns i Visual Studio leverantörskarta för fjärrinställningar.

Om forceWSL1Tooslet är inställt på true, behåller Visual Studio inte en kopia av källfilerna i WSL-filsystemet. I stället kommer den åt källfiler på den monterade Windows enheten (/mnt/...).

I de flesta fall är det bäst att använda WSL 2-verktygsuppsättningen med WSL 2-distributioner eftersom WSL 2 är långsammare när projektfiler i stället lagras i Windows filsystemet. Mer information om filsystemprestanda i WSL 2 finns i Jämföra WSL 1 och WSL 2.

Ange avancerade inställningar i leverantörskartan för Visual Studio Fjärrinställningar, såsom sökvägen till katalogen på WSL 2 där projektet kopieras, alternativ för kopiering av källor och argument för rsync-kommandot i CMakePresets.json. Mer information finns i Visual Studio leverantörskarta för fjärrinställningar.

Systemhuvuden kopieras fortfarande automatiskt till Windows filsystemet för att tillhandahålla den inbyggda IntelliSense-upplevelsen. Du kan anpassa rubrikerna som inkluderas eller exkluderas från den här kopian i Visual Studio Remote Settings leverantörskarta i CMakePresets.json.

Du kan ändra IntelliSense-läget eller ange andra IntelliSense-alternativ i leverantörskartan Visual Studio Inställningar i CMakePresets.json. Mer information om leverantörskartan finns i Visual Studio leverantörskarta för fjärrinställningar.

WSL 2- och MSBuild-baserade Linux-projekt

CMake rekommenderas för all C++ plattformsoberoende utveckling med Visual Studio eftersom du kan skapa och felsöka samma projekt på Windows, WSL och fjärrsystem.

Men du kan ha ett MSBuild-baserat Linux-projekt.

Om du har ett MSBuild-baserat Linux-projekt kan du uppgradera till WSL 2-verktygsuppsättningen i Visual Studio. Högerklicka på projektet i Lösningsutforskaren och välj sedan Egenskaper>, Allmänna> och Plattformverktygssats:

Skärmbild av en Visual Studio listruta med Plattformsverktyg markerad och till höger en annan listruta med WSL2 Toolset vald.

Om du riktar in dig på en WSL 2-distribution och inte vill använda WSL 2-verktygsuppsättningen, I listrutan Platform Toolset väljer du sedan GCC för Podsystém Windowsu pre Linux eller Clang för verktygsuppsättningen Podsystém Windowsu pre Linux. Om någon av dessa verktygsuppsättningar har valts behåller Visual Studio inte en kopia av dina källfiler i WSL-filsystemet och kommer i stället åt källfiler över den monterade Windows enheten (/mnt/...). Systemhuvuden kopieras fortfarande automatiskt till Windows filsystemet för att tillhandahålla en intern IntelliSense-upplevelse. Anpassa rubrikerna som inkluderas eller exkluderas från den här kopian i Egenskapssidor>Allmänt.

I de flesta fall är det bäst att använda WSL 2-verktygsuppsättningen med WSL 2-distributioner eftersom WSL 2 är långsammare när projektfiler lagras i Windows filsystemet. Mer information finns i Jämföra WSL 1 och WSL 2.

Se även

Video: FelsökA C++ med WSL 2-distributioner och Visual Studio 2022
Ladda ned Visual Studio 2022
Skapa ett CMake Linux-projekt i Visual Studio
Tutorial: Felsöka ett CMake-projekt på en fjärransluten Windows dator