Procedura dettagliata: Compilare ed eseguire il debug di C++ con WSL 2 e Visual Studio 2022

Visual Studio 2022 introduce un set di strumenti C++ nativo per lo sviluppo di sottosistema Windows per Linux versione 2 (WSL 2). Questo set di strumenti è ora disponibile in Visual Studio 2022 versione 17.0 o versione successiva.

WSL 2 è la nuova versione consigliata del sottosistema Windows per Linux (WSL). Offre prestazioni migliori del file system Linux, supporto dell'interfaccia utente grafica e compatibilità completa delle chiamate di sistema. il set di strumenti WSL 2 di Visual Studio consente di usare Visual Studio per compilare ed eseguire il debug del codice C++ nelle distribuzioni WSL 2 senza aggiungere una connessione SSH. È già possibile compilare ed eseguire il debug di codice C++ nelle distribuzioni WSL 1 usando il set di strumenti nativo WSL 1 introdotto in Visual Studio 2019 versione 16.1.

il set di strumenti WSL 2 di Visual Studio supporta progetti Linux basati su CMake e MSBuild. CMake è la raccomandazione per tutti gli sviluppatori multipiattaforma C++ con Visual Studio. È consigliabile usare CMake perché compila ed esegue il debug dello stesso progetto in Windows, WSL e sistemi remoti.

Per una presentazione video delle informazioni contenute in questo argomento, vedere Video: Debug di C++ con distribuzioni WSL 2 e Visual Studio 2022.

Sfondo del set di strumenti WSL 2

Il supporto multipiattaforma C++ in Visual Studio presuppone che tutti i file di origine abbiano origine nel file system Windows. Quando la destinazione è una distribuzione WSL 2, Visual Studio esegue un comando rsync locale per copiare i file dal file system Windows al file system WSL. La copia locale rsync non richiede alcun intervento dell'utente. Si verifica automaticamente quando Visual Studio rileva che si usa una distribuzione di WSL 2. Per altre informazioni sulle differenze tra WSL 1 e WSL 2, vedere Confronto tra WSL 1 e WSL 2.

L'integrazione dei set di impostazioni di CMake in Visual Studio supporta il set di strumenti WSL 2. Per altre informazioni, vedere CMake Presets integration in Visual Studio and Visual Studio Code and Configurare e compilare con i set di impostazioni di CMake in Visual Studio. In questo articolo sono disponibili anche informazioni più avanzate in Considerazioni sui progetti WSL 2 e CMake avanzati.

Installare gli strumenti di compilazione

Installare gli strumenti necessari per compilare ed eseguire il debug in WSL 2. Si installa una versione recente di CMake usando la distribuzione binaria CMake di Visual Studio in un passaggio successivo.

  1. Installare WSL e una distribuzione WSL 2 seguendo le istruzioni riportate in Installare WSL.

  2. Nel programma di installazione di Visual Studio verificare che C++ CMake tools for Linux sia installato. A tale scopo, scegliere Modify per la versione di Visual Studio. Nella scheda Singoli componenti, cercare strumenti C++ CMake per Linux e Mac e assicurarsi che siano selezionati e installati. Questo componente è necessario per Visual Studio rilevare le installazioni WSL.

  3. Supponendo che la distribuzione usi apt (questa procedura dettagliata usa Ubuntu), usare i comandi seguenti per installare gli strumenti di compilazione necessari nella distribuzione di WSL 2:

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

    Che installa:

    • Compilatore C++
    • gdb
    • CMake
    • rsync
    • zip
    • Generatore sottostante di sistema di build

Sviluppo CMake multipiattaforma con una distribuzione WSL 2

Questa procedura dettagliata usa GCC e Ninja in Ubuntu. E richiede Visual Studio 2022 versione 17.0 Preview 2 o successiva.

Visual Studio definisce un progetto CMake come cartella con un file CMakeLists.txt nella radice del progetto. In questa procedura dettagliata viene creato un nuovo project CMake usando il modello Visual Studio CMake Project:

  1. Nella schermata Visual Studio Introduzione selezionare Crea un nuovo progetto.

    Screenshot della finestra di dialogo attività iniziali di Visual Studio 2022. Le opzioni disponibili sono: Clonare un repository, Aprire un progetto o una soluzione, Aprire una cartella locale, Creare un nuovo progetto o Continuare senza codice.":::

  2. Nella casella di testo Cerca modelli digitare "cmake". Scegliere il tipo di CMake Project e selezionare Next. Assegnare al progetto un nome e un percorso e quindi selezionare Crea.

  3. Abilitare l'integrazione dei set di impostazioni di CMake di Visual Studio. Selezionare Strumenti>Opzioni>CMake>Generale. Selezionare Preferisci utilizzare i preset di CMake per configurare, creare e testare e quindi selezionare OK. In alternativa, è possibile aggiungere un CMakePresets.json file alla radice del progetto. Per altre informazioni, vedere Abilitare l'integrazione dei set di impostazioni di CMake.

    Screenshot delle opzioni del progetto Visual Studio. CMake > Generale è selezionato.

    Nel gruppo di file di configurazione di CMake, 'Usa i preset CMake se disponibili, altrimenti usa CMakeSettings.json' è indicato e selezionato.

  4. Per attivare l'integrazione: dal menu principale selezionare File>Chiudi cartella. Viene visualizzata la pagina Inizia. In Apri recente selezionare la cartella appena chiusa per riaprire la cartella.

  5. Nella barra dei menu principale Visual Studio sono presenti tre elenchi a discesa. Utilizzare il menu a discesa a sinistra per selezionare il sistema di destinazione attivo. Questo è il sistema in cui viene richiamato CMake per configurare e compilare il progetto. Visual Studio interroga le installazioni WSL con wsl -l -v. Nell'immagine seguente, WSL2: Ubuntu-20.04 viene visualizzata come sistema di destinazione.

    Screenshot dell'elenco a discesa del sistema di destinazione Visual Studio. WSL2: Ubuntu-20.04 è selezionato.

    Nota

    Se Visual Studio inizia a configurare automaticamente il progetto, leggere il passaggio 11 per gestire la distribuzione binaria di CMake e quindi continuare con il passaggio seguente. Per personalizzare questo comportamento, vedere Modificare la configurazione automatica e le notifiche della cache.

  6. Utilizzare il menu a discesa centrale per selezionare la preimpostazione configurabile attiva. Configurare i set di impostazioni indica Visual Studio come richiamare CMake e generare il sistema di compilazione sottostante. Nel passaggio 7, il Preset attivo è il Preset linux-default creato da Visual Studio. Per creare un set di impostazioni personalizzato, selezionare Gestisci configurazioni... Per altre informazioni su Configura set di impostazioni, vedere Selezionare un set di impostazioni preimpostato e modificare i set di impostazioni.

    Screenshot dell'elenco a discesa impostazione predefinita di configurazione attiva di Visual Studio. Gestisci configurazioni... è selezionato.

  7. Utilizzare l'elenco a discesa a destra per selezionare la preimpostazione di build attiva. I set di impostazioni di compilazione indicano Visual Studio come richiamare la compilazione. Nell'illustrazione del passaggio 7 il set di impostazioni di compilazione attivo è Default Build Preset creato da Visual Studio. Per altre informazioni sui set di impostazioni di compilazione, vedere Selezionare un set di impostazioni di compilazione.

  8. Configurare il progetto in WSL 2. Se la generazione di project non viene avviata automaticamente, richiamare manualmente la configurazione con Project>Configureproject-name

    Screenshot dell'elenco a discesa di configurazione del progetto Visual Studio. Configurare CMakeProject è selezionato.

  9. Se nella distribuzione di WSL 2 non è installata una versione supportata di CMake, Visual Studio richiede di distribuire una versione recente di CMake sotto la barra multifunzione del menu principale. Selezionare per distribuire i file binari CMake nella distribuzione di WSL 2.

    Screenshot di una richiesta sotto la barra degli strumenti di Visual Studio

    All'utente viene richiesto se installare i file binari C Make più recenti da C make . org perché la versione C Make supportata non è installata."

  10. Verificare che il passaggio di configurazione sia stato completato e che sia possibile visualizzare il messaggio di generazione di CMake completato nella finestra Output nel riquadro CMake . I file di compilazione vengono scritti in una directory nel file system della distribuzione WSL 2.

    Screenshot della finestra output Visual Studio. Contiene messaggi generati durante il passaggio di configurazione, incluso che la generazione di C Make è completa.

  11. Selezionare la destinazione di debug attiva. Il menu a discesa debug elenca tutte le destinazioni CMake disponibili per il progetto.

    Screenshot del menu a discesa Visual Studio debug. CMakeProject è selezionato.

  12. Espandi la sottocartella del progetto nel Esplora soluzioni. Nel file CMakeProject.cpp, imposta un punto di interruzione in main(). È anche possibile passare alla visualizzazione delle destinazioni CMake selezionando il pulsante Selettore Vista nel Esplora soluzioni, evidenziato nello screenshot seguente.

    Screenshot di Esplora Soluzioni di Visual Studio che mostra il pulsante per Cambiare Visualizzazione. Si trova a destra del pulsante Home.

  13. Selezionare Debug>Start, oppure premere F5. Il progetto viene compilato, il file eseguibile viene avviato nella distribuzione di WSL 2 e Visual Studio interrompe l'esecuzione nel punto di interruzione. L'output del programma (in questo caso , "Hello CMake.") è visibile nella finestra della console Linux:

    Screenshot di un programma hello world in esecuzione.

    Nella finestra della console di Visual Studio Linux viene visualizzato l'output del programma: 'Hello C Make'. La finestra dell'editor mostra il programma hello world. L'esecuzione è stata arrestata in corrispondenza di un punto di interruzione sulla riga con 'return 0;'.

A questo punto è stata compilata e sottoposto a debug un'app C++ con WSL 2 e Visual Studio 2022.

Considerazioni avanzate per i progetti WSL 2 e CMake

Visual Studio fornisce solo il supporto nativo per WSL 2 per i progetti CMake che usano CMakePresets.json come file di configurazione attivo. Per eseguire la migrazione da CMakeSettings.json a CMakePresets.json, vedere Integrazione dei set di impostazioni di CMake in Visual Studio.

Se si ha come destinazione una distribuzione WSL 2 e non si vuole usare il set di strumenti WSL 2, nella mappa fornitore di impostazioni remote Visual Studio in CMakePresets.json, impostare forceWSL1Toolset su true . Per altre informazioni, vedere mappa delle impostazioni remote del fornitore di Visual Studio.

Se forceWSL1Tooslet è impostato su true, Visual Studio non mantiene una copia dei file di origine nel file system WSL. Accede invece ai file di origine nell'unità Windows montata (/mnt/...).

Nella maggior parte dei casi, è consigliabile usare il set di strumenti WSL 2 con distribuzioni WSL 2 perché WSL 2 è più lento quando i file di progetto vengono invece archiviati nel file system Windows. Per altre informazioni sulle prestazioni del file system in WSL 2, vedere Confronto tra WSL 1 e WSL 2.

Specificare impostazioni avanzate, ad esempio il percorso della directory in WSL 2 in cui viene copiato il progetto, copiare le opzioni di origine e gli argomenti dei comandi rsync, nella mappa fornitore delle impostazioni remote di Visual Studio in CMakePresets.json. Per altre informazioni, vedere mappa dei fornitori delle impostazioni remote di Visual Studio.

Le intestazioni di sistema vengono ancora copiate automaticamente nel file system Windows per fornire l'esperienza nativa di IntelliSense. È possibile personalizzare le intestazioni incluse o escluse da questa copia nella mappa dei fornitori delle Impostazioni remote di Visual Studio in CMakePresets.json.

È possibile modificare la modalità IntelliSense o specificare altre opzioni di IntelliSense nella mappa fornitore delle impostazioni di Visual Studio in CMakePresets.json. Per informazioni dettagliate sulla mappa dei fornitori delle impostazioni remote di Visual Studio, vedere mappa fornitori impostazioni remote di Visual Studio.

Progetti Linux basati su WSL 2 e MSBuild

CMake è consigliato per tutti gli sviluppatori multipiattaforma C++ con Visual Studio perché consente di compilare ed eseguire il debug dello stesso progetto in Windows, WSL e sistemi remoti.

Ma potrebbe essere disponibile un progetto Linux basato su MSBuild.

Se si dispone di un progetto Linux basato su MSBuild, è possibile eseguire l'aggiornamento al set di strumenti WSL 2 in Visual Studio. Fare clic con il tasto destro sul progetto in Esplora soluzioni, quindi scegliere Proprietà>Generale>Strumento di piattaforma:

Screenshot di un elenco a discesa di Visual Studio con il 'Platform Toolset' selezionato e, a destra, un altro elenco a discesa con il set di strumenti WSL2 selezionato.

Se si ha come destinazione una distribuzione WSL 2 e non si vuole usare il set di strumenti WSL 2, nell'elenco a discesa Piattaforma selezionare il set di strumenti GCC per sottosistema Windows per Linux o Clang per sottosistema Windows per Linux. Se uno di questi set di strumenti è selezionato, Visual Studio non mantiene una copia dei file di origine nel file system WSL e accede invece ai file di origine sull'unità Windows montata (/mnt/...). Le intestazioni di sistema vengono comunque copiate automaticamente nel file system Windows per offrire un'esperienza IntelliSense nativa. Personalizzare le intestazioni incluse o escluse da questa copia in Pagine delle proprietà>Generale.

Nella maggior parte dei casi, è consigliabile usare il set di strumenti WSL 2 con distribuzioni WSL 2 perché WSL 2 è più lento quando i file di progetto vengono archiviati nel file system Windows. Per altre informazioni, vedere Confronto tra WSL 1 e WSL 2.

Vedi anche

Video: Eseguire il debug di C++ con distribuzioni WSL 2 e Visual Studio 2022
Download Visual Studio 2022
Creare un progetto CMake Linux in Visual Studio
Tutorial: eseguire il debug di un progetto CMake in un computer Windows remoto