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 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 WSL 1 nativo introdotto in Visual Studio 2019 versione 16.1.

Il set di strumenti WSL 2 di Visual Studio supporta entrambi i 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 sistemi Windows, WSL e remoti.

Per una presentazione video delle informazioni 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 locale rsync 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 Integrazione dei set di impostazioni di CMake in Visual Studio e Visual Studio Code e 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 installerà 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. 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 g++ gdb make ninja-build rsync zip
    

    I apt comandi precedenti installano:

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

Sviluppo CMake multipiattaforma con una distribuzione WSL 2

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

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

  1. Nella schermata Attività iniziali di Visual Studio 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 progetto CMake e selezionare Avanti. 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 Prefer using CMake Presets (Prefer using CMake Presets) per configurare, compilare e testare e quindi selezionare OK. È invece 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 di Visual Studio. Cmake > General è selezionato.

    Nel gruppo di file di configurazione di CMake viene chiamato 'Use CMake Presets if available, otherwise use CMake Impostazioni.json' is called out and is selected.

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

  5. Nella barra dei menu principale di Visual Studio sono disponibili tre elenchi a discesa. Usare l'elenco 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. Query di Visual Studio per 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 di Visual Studio. WSL2: Ubuntu-20.04 è l'opzione selezionata.

    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. Usare l'elenco a discesa al centro per selezionare il set di impostazioni attivo. Configurare i set di impostazioni indica a Visual Studio come richiamare CMake e generare il sistema di compilazione sottostante. Nel passaggio 7 l'impostazione predefinita configura attiva è il set di impostazioni predefinito linux 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 Configura set di impostazioni attivo di Visual Studio. Gestisci configurazioni... è selezionata.

  7. Usare l'elenco a discesa a destra per selezionare il set di impostazioni di compilazione attivo. I set di impostazioni di compilazione indicano a Visual Studio come richiamare la compilazione. Nell'illustrazione del passaggio 7 il set di impostazioni di compilazione attivo è il set di impostazioni di compilazione predefinito 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 del progetto non viene avviata automaticamente, richiamare manualmente la configurazione con Project>Configureproject-name

    Screenshot dell'elenco a discesa Configura progetto di 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 di Visual Studio. Contiene messaggi generati durante il passaggio di configurazione, incluso il completamento della generazione di C Make.

  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 Debug di Visual Studio. È selezionata l'opzione CMakeProject.

  12. Espandere la sottocartella del progetto nella Esplora soluzioni. CMakeProject.cpp Nel file impostare un punto di interruzione in main(). È anche possibile passare alla visualizzazione destinazioni CMake selezionando il pulsante Visualizza selezione nella 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 Avvia debug>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 che indica che restituisce 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 offre 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 , vedere Abilitare l'integrazione dei set di impostazioni di CMake in Visual StudioCMakePresets.json.

Se si ha come destinazione una distribuzione WSL 2 e non si vuole usare il set di strumenti WSL 2, nella mappa del fornitore di Visual Studio Remote Impostazioni in CMakePresets.jsonimpostare forceWSL1Toolset su true. Per altre informazioni, vedere Mappa del fornitore di Visual Studio Remote Impostazioni.

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 di 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 del fornitore di Visual Studio Remote Impostazioni in CMakePresets.json. Per altre informazioni, vedere Mappa del fornitore di Visual Studio Remote Impostazioni.

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

È possibile modificare la modalità IntelliSense o specificare altre opzioni di IntelliSense, nella mappa del fornitore di Visual Studio Impostazioni in CMakePresets.json. Per informazioni dettagliate sulla mappa fornitore, vedere Mappa fornitore di Visual Studio Remote Impostazioni.

Progetti Linux basati su WSL 2 e MSBuild

CMake è consigliato per tutto lo sviluppo multipiattaforma C++ con Visual Studio perché consente di compilare ed eseguire il debug dello stesso progetto in sistemi Windows, WSL e 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 pulsante destro del mouse sul progetto in Esplora soluzioni, quindi scegliere Proprietà>Generale>Set di strumenti della piattaforma:

Screenshot di un elenco a discesa di Visual Studio con il set di strumenti della piattaforma selezionato e a destra, un altro elenco a discesa con il set di strumenti WSL2 selezionato.

Se si usa una distribuzione WSL 2 e non si vuole usare il set di strumenti WSL 2, nell'elenco a discesa Set di strumenti della piattaforma selezionare GCC per sottosistema Windows per Linux o Clang per sottosistema Windows per Linux set di strumenti. 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 ancora copiate automaticamente nel file system di Windows per offrire un'esperienza IntelliSense nativa. Personalizzare le intestazioni incluse o escluse da questa copia in Generale pagine>delle proprietà.

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 di 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
Scarica Visual Studio 2022
Creare un progetto CMake Linux in Visual Studio
Esercitazione: Eseguire il debug di un progetto CMake in un computer Windows remoto