Progetti CMake in Visual Studio

CMake è uno strumento open source multipiattaforma per definire i processi di compilazione eseguiti su più piattaforme. Questo articolo presuppone che si abbia familiarità con CMake. Per altre informazioni su CMake, vedere la documentazione di CMake. L'esercitazione su CMake è un buon punto di partenza per altre informazioni.

Nota

CMake è diventato sempre più integrato con Visual Studio nelle ultime versioni. Per visualizzare la documentazione relativa alla versione preferita di Visual Studio, usare il controllo selettore della versione . Si trova nella parte superiore del sommario in questa pagina.

Il supporto nativo di Visual Studio per CMake consente di modificare, compilare ed eseguire il debug di progetti CMake in Windows, il sottosistema Windows per Linux (WSL) e i sistemi remoti dalla stessa istanza di Visual Studio. I file di progetto CMake (ad esempio CMakeLists.txt) vengono usati direttamente da Visual Studio ai fini di IntelliSense e dell'esplorazione. cmake.exe viene richiamato direttamente dalla configurazione e dalla compilazione di Visual Studio per CMake.

Installazione

Gli strumenti CMake C++ per Windows vengono installati come parte dello sviluppo di applicazioni desktop con C++ e Sviluppo Linux con carichi di lavoro C++ . Entrambi gli strumenti CMake C++ per lo sviluppo di Windows e Linux con C++ sono necessari per lo sviluppo CMake multipiattaforma.

Screenshot del programma di installazione di Visual Studio.

Nel programma di installazione è selezionato l'elenco a discesa Sviluppo di applicazioni desktop con C più più C e C Make tools for Windows.

Per altre informazioni, vedere Installare il carico di lavoro Linux C++ in Visual Studio.

Integrazione con l'IDE

Quando si apre una cartella contenente un CMakeLists.txt file, vengono eseguite le operazioni seguenti.

Screenshot della prima finestra di dialogo visualizzata all'avvio di Visual Studio.

La finestra di dialogo offre queste opzioni: clonare un repository, aprire un progetto o una soluzione, aprire una cartella locale o creare un nuovo progetto. Aprire una cartella locale è evidenziata nello screenshot.

  • Visual Studio aggiunge elementi CMake al menu Progetto , con comandi per la visualizzazione e la modifica degli script CMake.

  • Il Esplora soluzioni visualizza la struttura e i file delle cartelle.

  • Visual Studio esegue CMake e genera il file della cache CMake (CMakeCache.txt) per la configurazione predefinita. La riga di comando di CMake viene visualizzata nella finestra di output, insieme ad altri output di CMake.

  • In background, Visual Studio inizia a indicizzare i file sorgente per abilitare IntelliSense, le informazioni di navigazione, il refactoring e così via. Mentre si lavora, Visual Studio esegue il monitoraggio delle modifiche nell'editor e anche sul disco per mantenere l'indice sincronizzato con le sorgenti.

Nota

A partire da Visual Studio 2022 versione 17.1 Preview 2, se il livello CMakeLists.txt principale esiste in una sottocartella e non nella radice dell'area di lavoro, verrà richiesto se si vuole abilitare o meno l'integrazione di CMake. Per altre informazioni, vedere Attivazione parziale di CMake.

Una volta completata la generazione della cache CMake, è anche possibile visualizzare i progetti organizzati logicamente in base alle destinazioni. Scegliere il pulsante Seleziona visualizzazione sulla barra degli strumenti Esplora soluzioni. Nell'elenco in Esplora soluzioni - Visualizzazioni selezionare Visualizzazione destinazioni CMake e premere INVIO per aprire la visualizzazione destinazioni:

Screenshot della finestra visualizzazioni Esplora soluzioni. La visualizzazione cartella è aperta. L'opzione C Make Targets View è evidenziata.

Scegliere il pulsante Mostra tutti i file nella parte superiore di Esplora soluzioni per visualizzare tutti gli output generati da CMake nelle out/build/<config> cartelle.

Usare il CMakeLists.txt file in ogni cartella del progetto esattamente come in qualsiasi progetto CMake. È possibile specificare i file di origine, trovare librerie, impostare le opzioni del compilatore e del linker e specificare altre informazioni correlate al sistema di compilazione. Per altre informazioni sui servizi di linguaggio CMake forniti da Visual Studio, vedere Modifica di file CMakeLists.txt.

Visual Studio usa un file di configurazione CMake per l'unità di generazione e compilazione della cache CMake. Per altre informazioni, vedere Configurazione di progetti CMake e Compilazione di progetti CMake.

Per passare argomenti a un eseguibile in fase di debug, è possibile usare un altro file denominato launch.vs.json. Per altre informazioni sul debug di progetti CMake multipiattaforma in Visual Studio, vedere Debug di progetti CMake.

La maggior parte delle funzionalità del linguaggio Visual Studio e C++ è supportata dai progetti CMake in Visual Studio. Alcuni esempi:

Nota

Per altri tipi di progetti Open Folder, viene usato un file CppProperties.json JSON aggiuntivo. Questo file non è rilevante per i progetti CMake.

Configurazione di progetti CMake

Il passaggio di configurazione di CMake genera il sistema di compilazione del progetto. Equivale a richiamare cmake.exe dalla riga di comando. Per altre informazioni sul passaggio di configurazione di CMake, vedere la documentazione di CMake.

Visual Studio usa un file di configurazione CMake per generare e compilare CMake. CMakePresets.json è supportato da Visual Studio 2019 versione 16.10 o successiva ed è il file di configurazione CMake consigliato. CMakePresets.json è supportato direttamente da CMake e può essere usato per guidare la generazione e la compilazione di CMake da Visual Studio, da VS Code, in una pipeline di integrazione continua e dalla riga di comando in Windows, Linux e Mac. Per altre informazioni su CMakePresets.json, vedere Configurare e compilare con i set di impostazioni di CMake. CMakeSettings.json è disponibile per i clienti che usano una versione precedente di Visual Studio. Per altre informazioni su CMakeSettings.json, vedere Personalizzare le impostazioni di compilazione di CMake.

Quando si apportano modifiche significative al file di configurazione di CMake o a un CMakeLists.txt file, Visual Studio eseguirà automaticamente il passaggio di configurazione di CMake. È possibile richiamare manualmente il passaggio di configurazione: selezionare Configurazione progetto > cache dalla barra degli strumenti. È anche possibile modificare le preferenze di configurazione in Strumenti>Opzioni>CMake>Generale.

Screenshot delle opzioni di configurazione di CMake nella finestra delle impostazioni di Visual Studio.

Vengono visualizzate le impostazioni di configurazione di CMake. Mostra L'opzione Rendi le notifiche della cache in C è selezionata. In 'When cache is out of date:', l'opzione 'Never run configure step automatically' (Non eseguire mai il passaggio di configurazione automaticamente) è selezionata.

Se il passaggio di configurazione termina senza errori, le informazioni disponibili sono le unità IntelliSense C++ e i servizi di linguaggio. Viene usato anche nelle operazioni di compilazione e debug.

È anche possibile aprire una cache CMake esistente in Visual Studio. Per altre informazioni, vedere Aprire una cache esistente.

Personalizzare il feedback e le notifiche sulla configurazione

Per impostazione predefinita, la maggior parte dei messaggi di configurazione viene eliminata a meno che non si verifichi un errore. Per visualizzare tutti i messaggi, selezionare Strumenti>Opzioni>CMake>Abilita output di diagnostica CMake dettagliato.

È anche possibile disabilitare tutte le notifiche della cache CMake (barre oro) deselezionando Mostra notifica della cache CMake.

Risoluzione degli errori di cache CMake

Se sono necessarie altre informazioni sullo stato della cache CMake per diagnosticare un problema, aprire il menu principale progetto o il CMakeLists.txt menu di scelta rapida in Esplora soluzioni per eseguire uno di questi comandi:

  • Visualizza CMakeCache.txt apre il CMakeCache.txt file dalla directory di compilazione nell'editor. Eventuali modifiche apportate in CMakeCache.txt vengono cancellate se si pulisce la cache. Per apportare modifiche che vengono mantenute dopo la pulizia della cache, vedere Personalizzare le impostazioni di CMake o Configurare e compilare con i set di impostazioni di CMake.

  • Elimina cache e riconfigura elimina la directory di compilazione e riconfigura da una cache pulita.

  • Configura cache forza l'esecuzione del passaggio di generazione anche se Visual Studio considera aggiornato l'ambiente.

Compilazione di progetti CMake

Il passaggio di compilazione CMake compila un albero binario del progetto già generato. Equivale a richiamare cmake --build dalla riga di comando. Per altre informazioni sul passaggio di compilazione di CMake, vedere la documentazione di CMake.

Per compilare un progetto di CMake, sono disponibili le opzioni seguenti:

  1. Nella barra degli strumenti trovare l'elenco a discesa Elemento di avvio. Selezionare la destinazione preferita e premere F5 oppure scegliere il pulsante Esegui sulla barra degli strumenti. Il progetto viene compilato automaticamente prima di tutto, come una soluzione Visual Studio.

  2. Fare clic con il pulsante destro del mouse sulla destinazione CMake con CMake Targets View (Visualizza destinazioni CMake) attiva nella Esplora soluzioni e scegliere Build (Compila) dal menu di scelta rapida.

  3. Scegliere Compila > tutto dal menu principale. Assicurarsi che una destinazione CMake sia già selezionata nell'elenco a discesa Elemento di avvio sulla barra degli strumenti.

Come prevedibile, i risultati della compilazione sono visualizzati nella Finestra di output e nell'Elenco errori.

Screenshot della finestra Elenco errori di Visual Studio Gli avvisi di compilazione di CMake relativi alle conversioni che possono causare una perdita di dati, ad esempio la conversione da un tipo float a un numero intero, sono visibili. :::image-end:::

Modificare le impostazioni di compilazione

Visual Studio usa un file di configurazione CMake per l'unità delle compilazioni CMake. I file di configurazione di CMake incapsulano opzioni di compilazione come opzioni dello strumento di compilazione nativo e variabili di ambiente. Se CMakePresets.json è il file di configurazione attivo, vedere Configurare e compilare con i set di impostazioni di CMake. Se CMakeSettings.json è il file di configurazione attivo, vedere Personalizzare le impostazioni di compilazione di CMake. CMakePresets.json è disponibile in Visual Studio 2019 versione 16.10 o successiva ed è il file di configurazione CMake consigliato.

Debug dei progetti CMake

Tutte le destinazioni CMake eseguibili vengono visualizzate nell'elenco a discesa Elemento di avvio sulla barra degli strumenti. Per avviare il debug, selezionare uno e premere il pulsante Debug > Avvia debug sulla barra degli strumenti. In un progetto CMake l'opzione "Documento corrente" è valida solo per i file .cpp.

Screenshot dell'elenco a discesa Debug di Visual Studio.

L'elenco a discesa include queste opzioni: Mostra/Nascondi destinazioni di debug, documento corrente, esempi (evidenziati), box2d_tests e samples-noGUI.

I comandi Debug o F5 compilano prima il progetto se sono state apportate modifiche dopo la compilazione precedente. Le modifiche apportate al file di configurazione di CMake (CMakePresets.json o ) o CMakeSettings.jsona causa CMakeLists.txt della rigenerazione della cache CMake.

È possibile personalizzare una sessione di debug di CMake impostando le proprietà nel file launch.vs.json. Per personalizzare le impostazioni di debug per una destinazione specifica, selezionare la destinazione nell'elenco a discesa Elemento di avvio e premere Debug > debug e Impostazioni di avvio per <la destinazione> attiva. Per altre informazioni sulle sessioni di debug di CMake, vedere Configurare le sessioni di debug di CMake.

Just My Code per i progetti CMake

Quando si compila per Windows usando il compilatore MSVC, i progetti CMake supportano il debug Just My Code. Per modificare l'impostazione Just My Code, passare a Strumenti>Opzioni>debug>Generale. Per altre informazioni sul debug just my code, vedere Eseguire il debug solo del codice utente con Just My Code.

Modificare e continuare per i progetti CMake

Quando si compila per Windows con il compilatore MSVC, i progetti CMake supportano Modifica e Continuazione. Aggiungere il codice seguente al CMakeLists.txt file per abilitare Modifica e Continuazione. Per altre informazioni su Modifica e continuazione, vedere Configurare modifica e continuazione (C#, VB, C++).

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

Connettersi a un progetto CMake in esecuzione in Linux

Visual Studio consente di eseguire il debug di un processo in esecuzione in un sistema Linux remoto o WSL ed eseguirne il debug con il debugger GDB. Per iniziare, selezionare Debug>Connetti a processo, impostare Tipo di connessione su SSH e selezionare la destinazione connessione nell'elenco delle connessioni nel Gestione connessioni. Selezionare un processo dall'elenco dei processi disponibili e premere Collega. GDB deve essere installato nel computer Linux. Per altre informazioni sulle connessioni SSH, vedere il Gestione connessioni

Screenshot del menu Connetti a processo in Visual Studio.

Nella finestra di dialogo sono disponibili le opzioni seguenti: Tipo di connessione (impostato su SSH), destinazione della connessione (impostata su demo@ 172. 20. 60. 6) e un elenco dei processi disponibili a cui è possibile collegarsi."

Attivazione parziale di CMake

In Visual Studio 2022 versione 17.1 e successive, la funzionalità di CMake non verrà abilitata automaticamente se la cartella radice non contiene un CMakeLists.txt file. Verrà invece visualizzata una finestra di dialogo per indicare se si vuole abilitare la funzionalità di CMake per il progetto. Se si rifiuta, la generazione della cache CMake non viene avviata e le configurazioni CMake (da CMakeSettings.json o CMakePresets.json) non verranno visualizzate nell'elenco a discesa della configurazione. Se si accetta, verrà visualizzato un file di configurazione a livello di area di lavoro ( CMakeWorkspaceSettings.json archiviato nella .vs directory) per specificare le cartelle per cui si vuole abilitare CMake. Queste cartelle contengono i file radice CMakeLists.txt .

Le proprietà accettate sono:

Proprietà Descrizione
enableCMake Abilitare l'integrazione di Visual Studio per questa area di lavoro.
sourceDirectory Stringa o matrice di stringhe che specificano la directory o le directory con CMakeLists.txt. Le macro ( ad esempio ${workspaceRoot}) sono consentite. I percorsi relativi si basano sulla radice dell'area di lavoro. Le directory esterne all'area di lavoro corrente verranno ignorate.

È possibile accedere CMakeWorkspaceSettings.json tramite il comando di menu Impostazioni area di lavoro di Project>CMake in qualsiasi momento, anche se la funzionalità di CMake è attualmente disabilitata.

Aprire una cache esistente

Quando si apre un file di cache CMake esistente (CMakeCache.txt), Visual Studio non tenta di gestire la cache e la struttura ad albero di compilazione. Gli strumenti personalizzati o preferiti hanno il controllo completo sul modo in cui CMake configura il progetto.

È possibile aggiungere una cache CMake esistente a un progetto aperto. Viene eseguita allo stesso modo in cui si aggiunge una nuova configurazione. Per altre informazioni, vedere il post di blog sull'apertura di una cache esistente in Visual Studio.

Nota

L'esperienza di cache esistente predefinita si basa su cmake-server, che è stato rimosso da CMake nella versione 3.20. Per continuare a usare la funzionalità cache esistente in Visual Studio 2019 versione 16.10 e successive, eseguire una delle operazioni seguenti:

  • Installare manualmente CMake versione 3.19 o precedente. Impostare quindi la cmakeExecutable proprietà nella configurazione della cache esistente per usare tale versione di CMake.
  • Nella configurazione della cache esistente impostare la cacheGenerationCommand proprietà per consentire a Visual Studio di richiedere i file API basati su file CMake necessari. Per altre informazioni su tale proprietà, vedere CMakeSettings.json riferimento.
  • Usare un file di query per richiedere i file api basati su file CMake durante la generazione della cache prima dell'apertura in Visual Studio. Per istruzioni sui file di query, vedere la sezione successiva Risoluzione dei problemi della cache CMake avanzata.

Risoluzione avanzata della risoluzione dei problemi relativi alla cache CMake

Visual Studio usa l'API basata su file CMake (nelle versioni 3.14 e successive) per popolare l'editor con informazioni specifiche per la struttura del progetto. Per altre informazioni, vedere il post di blog del team C++ sulle aree di lavoro multi-radice e sull'API basata su file.

Prima di generare la cache CMake, gli strumenti personalizzati o preferiti potrebbero dover creare un file di query denominato .cmake/api/v1/query/client-MicrosoftVS/query.json nella cartella di output di compilazione (la cartella che contiene CMakeCache.txt). Il file di query deve contenere questo contenuto:

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

Quando gli strumenti personalizzati o preferiti generano la cache, CMake inserisce i file in .cmake/api/v1/response tale Visual Studio per popolare l'editor con informazioni specifiche della struttura del progetto.

Modifica dei CMakeLists.txt file

Per modificare un CMakeLists.txt file, fare clic con il pulsante destro del mouse sul file in Esplora soluzioni e scegliere Apri. Se si apportano modifiche al file, viene visualizzata una barra di stato gialla che informa che IntelliSense verrà aggiornato. Consente di annullare l'operazione di aggiornamento. Per informazioni su CMakeLists.txt, vedere la documentazione di CMake.

Screenshot di un file Di creazione elenchi C .txt da modificare in Visual Studio.

Contiene il progetto di righe (hello-cmake), add_subdirectory (test), add_executable (hello hello.cpp) e l'installazione (TARGETS hello DESTINATION hello/bin). Un messaggio nella parte superiore della finestra indica che c più informazioni IntelliSense verranno aggiornate al termine della generazione della cache da parte di C Make.

Non appena si salva il file, viene eseguito nuovamente e automaticamente il passaggio di configurazione che visualizza le informazioni nella finestra Output. Gli errori e gli avvisi vengono visualizzati nella finestra Elenco errori o Output. Fare doppio clic su un errore nell'elenco errori per passare alla riga che causa l'errore in CMakeLists.txt.

Screenshot di un errore C Nell'elenco degli errori di Visual Studio.

Viene evidenziato un messaggio di errore C Nella riga 3 di CMakeLists.txt. I dettagli sono che C Make non è riuscito a trovare un file di configurazione del pacchetto fornito da sqlite3. C Make looked for it in CMAKE_MODULE_PATH but couldn't find it.C Make looked for it in CMAKE_MODULE_PATH but't find it. Il suggerimento consiste nell'aggiungere il prefisso di installazione 'sqlite3' a CMAKE_PREFIX_PATH o impostare sqlite3_DIR su una directory contenente sqlite3Config.cmake e/o sqlitet3-config.cmake.

Servizi di linguaggio per CMake

I servizi di linguaggio per CMake sono disponibili in Visual Studio 2019 versione 16.5 o successiva. Supporta funzionalità di spostamento del codice come Vai a definizione, Visualizza definizione e Trova tutti i riferimenti per variabili, funzioni e destinazioni CMake nei file di script CMake. Per altre informazioni, vedere Spostamento del codice per gli script CMake.

Screenshot della finestra Trova tutti i riferimenti di Visual Studio.

Vengono visualizzati i risultati della posizione in cui vengono trovati i SUPERTUX_SOURCES_CXX. Ad esempio, in list(SORT SSUPERTUX_SOURCES_CXX), file(GLOB SUPERTUX_SOURCES_CXX) e così via.

Manipolazione del progetto CMake

La modifica del progetto CMake è disponibile in Visual Studio 2019 versione 16.5 o successiva. La manipolazione del progetto consente di aggiungere, rimuovere e rinominare file e destinazioni di origine nel progetto CMake senza modificare manualmente gli script CMake. Quando si aggiungono o rimuovono file dalla Esplora soluzioni, Visual Studio modifica automaticamente il progetto CMake. Potrebbe esserci più di una posizione in cui è opportuno aggiungere o rimuovere un riferimento a uno script CMake. In tal caso, Visual Studio chiede dove si vuole apportare la modifica e visualizza un'anteprima delle modifiche proposte. Per istruzioni dettagliate, vedere Aggiungere, rimuovere e rinominare file e destinazioni nei progetti CMake.

Screenshot della finestra di dialogo Modifiche anteprima di Visual Studio.

Una visualizzazione albero mostra CMakeLists.txt, in cui sono due elementi: add_executable e impostati. Il set è selezionato. La finestra di anteprima mostra dove verranno apportate le modifiche. Il set di righe (PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" mostra "Demo.cpp" evidenziato prima della parentesi di chiusura. Il pulsante applica accetta la modifica oppure è possibile premere annulla.

IntelliSense per i progetti CMake

Per impostazione predefinita, Visual Studio usa la modalità IntelliSense corrispondente all'architettura del compilatore e di destinazione specificata dalla configurazione CMake attiva.

Se CMakePresets.json è il file di configurazione CMake attivo, è possibile specificare le opzioni di IntelliSense usando intelliSenseMode e intelliSenseOptions nella mappa fornitore delle impostazioni di Visual Studio. Per altre informazioni, vedere informazioni di riferimento sulla mappa fornitore delle impostazioni di Visual Studio.

Se CMakeSettings.json è il file di configurazione CMake attivo, è possibile specificare le opzioni di IntelliSense usando intelliSenseMode in CMakeSettings.json. Per altre informazioni, vedere le CMakeSettings.jsoninformazioni di riferimento.

Configurare IntelliSense con i file toolchain CMake

In Visual Studio 2019 versione 16.9 e successive Visual Studio configura automaticamente IntelliSense nei progetti CMake in base alle variabili CMake quando si usa un file toolchain CMake. Per altre informazioni, vedere Configurare IntelliSense con i file toolchain CMake.

Integrazione di Vcpkg

I progetti CMake aperti in Visual Studio si integrano con vcpkg, una gestione dipendenze C/C++ multipiattaforma. Prima di usare vcpkg con Visual Studio, è necessario eseguire vcpkg integrate install. Per istruzioni e altre informazioni su vcpkg, vedere:

Se CMakeSettings.json è il file di configurazione attivo, Visual Studio passa automaticamente il file toolchain vcpkg (vcpkg.cmake) a CMake. Questo comportamento viene disabilitato automaticamente quando si specifica qualsiasi altra toolchain nella configurazione delle impostazioni di CMake.

Se CMakePresets.json è il file di configurazione attivo, è necessario impostare il percorso su vcpkg.cmake in CMakePresets.json. È consigliabile usare la VCPKG_ROOT variabile di ambiente anziché un percorso assoluto per mantenere condivisibile il file. Per altre informazioni, vedere Abilitare l'integrazione di vcpkg con I set di impostazioni di CMake. CMakePresets.json è disponibile in Visual Studio 2019 versione 16.10 o successiva ed è il file di configurazione CMake consigliato.

Eseguire CMake dalla riga di comando

Se CMakePresets.json è il file di configurazione CMake attivo, è possibile riprodurre facilmente le compilazioni locali all'esterno di Visual Studio. Per altre informazioni, vedere Eseguire CMake dalla riga di comando o da una pipeline CI. CMakePresets.json è supportato in Visual Studio 2019 versione 16.10 o successiva ed è il file di configurazione CMake consigliato.

Se CMakeSettings.json è il file di configurazione CMake attivo, sarà necessario passare manualmente gli argomenti codificati nel CMakeSettings.json file a CMake. Se CMake è stato installato dal programma di installazione di Visual Studio, è possibile eseguirlo dalla riga di comando seguendo questa procedura:

  1. Eseguire il file appropriato vsdevcmd.bat (x86/x64). Per altre informazioni, vedere Compilazione nella riga di comando .

  2. Passare alla cartella di output.

  3. Eseguire CMake per compilare o configurare l'app.

Visual Studio 2017 offre un supporto avanzato per CMake, inclusi i progetti CMake multipiattaforma. Il componente Visual C++ Tools per CMake usa la funzionalità Apri cartella per consentire all'IDE di utilizzare direttamente i file di progetto CMake (ad esempio CMakeLists.txt) ai fini di IntelliSense e dell'esplorazione. Sono supportati i generatori Ninja e Visual Studio. Se si usa un generatore di Visual Studio, viene generato un file di progetto temporaneo e lo passa a MSBuild. Tuttavia, il progetto non viene mai caricato a scopo di IntelliSense o esplorazioni. È anche possibile importare una cache CMake esistente.

Installazione

Visual C++ Tools per CMake viene installato come parte dello sviluppo di applicazioni desktop con C++ e Sviluppo Linux con carichi di lavoro C++ .

Screenshot del Programma di installazione di Visual Studio. La scheda Singoli componenti è selezionata in cui è selezionato Visual C più strumenti per CMake.

Per altre informazioni, vedere Installare il carico di lavoro Linux C++ in Visual Studio.

Integrazione con l'IDE

Quando si sceglie File > Apri > cartella per aprire una cartella contenente un CMakeLists.txt file, si verifica quanto segue:

  • Visual Studio aggiunge una voce di menu CMake al menu principale, con comandi per la visualizzazione e la modifica di script di CMake.

  • Esplora soluzioni visualizza la struttura delle cartelle e i file.

  • Visual Studio esegue CMake e, facoltativamente, genera la cache CMake per la configurazione predefinita, ovvero debug x86. La riga di comando di CMake viene visualizzata nella finestra di output, insieme ad altri output di CMake.

  • In background, Visual Studio inizia a indicizzare i file sorgente per abilitare IntelliSense, le informazioni di navigazione, il refactoring e così via. Mentre si lavora, Visual Studio esegue il monitoraggio delle modifiche nell'editor e anche sul disco per mantenere l'indice sincronizzato con le sorgenti.

È possibile aprire le cartelle che contengono un numero qualsiasi di progetti di CMake. Visual Studio rileva e configura tutti i file "radice" CMakeLists.txt nell'area di lavoro. Le operazioni CMake (configurazione, compilazione, debug), IntelliSense C++ e esplorazione sono disponibili per tutti i progetti CMake nell'area di lavoro.

Screenshot del Esplora soluzioni di Visual Studio.

I file e le cartelle di un progetto CMake sono visibili. Esiste una sottodirectory di test, CMakeLists.txt e hello.cpp. Esiste una cartella hello-cmake-vcpkg che contiene CMakeLists.txt, CMakeSettings.json e hello.cpp.

È anche possibile visualizzare i progetti organizzati in modo logico in base alle destinazioni. Scegliere Visualizzazione destinazioni CMake dall'elenco a discesa sulla barra degli strumenti di Esplora soluzioni:

Screenshot del pulsante a discesa nel Esplora soluzioni di Visual Studio che offre l'opzione di visualizzazione destinazioni CMake. Selezionata.

Visual Studio usa un file denominato CMakeSettings.json per archiviare le variabili di ambiente o le opzioni della riga di comando per CMake. CMakeSettings.json consente anche di definire e archiviare più configurazioni di compilazione CMake. È possibile passare da una posizione all'altra nell'IDE.

In caso contrario, usare esattamente CMakeLists.txt come si farebbe in qualsiasi progetto CMake per specificare i file di origine, trovare librerie, impostare le opzioni del compilatore e del linker e specificare altre informazioni correlate al sistema di compilazione.

Se è necessario passare argomenti a un file eseguibile in fase di debug, è possibile usare un altro file denominato launch.vs.json. In alcuni scenari, Visual Studio genera automaticamente questi file. È possibile modificarli manualmente o anche creare il file manualmente.

Nota

Per altri tipi di progetti Apri cartella vengono usati due file JSON aggiuntivi: CppProperties.json e tasks.vs.json. Nessuno dei due è rilevante per i progetti CMake.

Importare una cache esistente

Quando si importa un file esistente CMakeCache.txt , Visual Studio estrae automaticamente variabili personalizzate e crea un file prepopolato CMakeSettings.json in base a essi. La cache originale non viene modificata in alcun modo. Può comunque essere usato dalla riga di comando o con qualsiasi strumento o IDE usato per generarlo. Il nuovo CMakeSettings.json file viene inserito insieme alla radice CMakeLists.txtdel progetto. Visual Studio genera una nuova cache basata sul file di impostazione. È possibile eseguire l'override della generazione automatica della cache nella finestra di dialogo Strumenti > Opzioni > CMake > Generale .

Non tutti gli elementi della cache vengono importati. Proprietà quali il generatore e la posizione dei compilatori vengono sostituite con proprietà predefinite che funzionano bene con l'IDE.

Per importare una cache esistente

  1. Dal menu principale scegliere File > Apri > CMake:

    Screenshot del menu principale di Visual Studio. È selezionata l'opzione Apri > > C Make file.

    Questo comando consente di visualizzare la procedura guidata Importa CMake dalla cache .

  2. Passare al CMakeCache.txt file da importare e quindi scegliere OK. Viene visualizzata la procedura guidata Importa progetto CMake dalla cache:

    Screenshot della procedura guidata Importa progetto CMake dalla cache. Il percorso della directory del progetto CMake da importare viene inserito nella casella di testo

    Al termine della procedura guidata, è possibile visualizzare il nuovo CMakeCache.txt file in Esplora soluzioni accanto al file radice CMakeLists.txt nel progetto.

Compilazione di progetti CMake

Per compilare un progetto di CMake, sono disponibili le opzioni seguenti:

  1. Nella barra degli strumenti Generale trovare l'elenco a discesa Configurazioni . È probabile che venga visualizzato "Linux-Debug" o "x64-Debug" per impostazione predefinita. Selezionare la configurazione preferita e premere F5 oppure scegliere il pulsante Esegui (triangolo verde) sulla barra degli strumenti. Il progetto viene compilato automaticamente prima di tutto, come una soluzione Visual Studio.

  2. Fare clic con il pulsante destro del mouse su CMakeLists.txt in Esplora soluzioni e scegliere Compila dal menu di scelta rapida. Se nella struttura delle cartelle sono presenti più destinazioni, è possibile scegliere di compilare tutte o solo una destinazione specifica.

  3. Dal menu principale selezionare Compila soluzione compilazione > (F7 o CTRL+MAIUSC+B). Assicurarsi che sia già selezionata una destinazione di CMake nell'elenco a discesa Elemento di avvio nella barra degli strumenti Generale.

Screenshot del Esplora soluzioni di Visual Studio dopo aver fatto clic con il pulsante destro del mouse su CMakeLists.txt.

Il menu include opzioni come Aggiungi, Apri, Configura attività, Compila, Pulisci tutto e così via.

È possibile personalizzare configurazioni di compilazione, variabili di ambiente, argomenti della riga di comando e altre impostazioni nel CMakeSettings.json file. Consente di apportare modifiche senza modificare il CMakeLists.txt file. Per altre informazioni, vedere Customize CMake settings (Personalizzare le impostazioni di CMake).

Come prevedibile, i risultati della compilazione sono visualizzati nella Finestra di output e nell'Elenco errori.

Screenshot della finestra Elenco errori di Visual Studio.

Gli avvisi di compilazione di CMake relativi alle conversioni che possono causare la perdita di dati, ad esempio la conversione da un valore float a un numero intero, sono visibili.

In una cartella con più destinazioni di compilazione è possibile specificare la destinazione CMake da compilare: scegliere la voce Compila nel menu CMake o il CMakeLists.txt menu di scelta rapida per specificare la destinazione. Se si immette CTRL+MAIUSC+B in un progetto CMake, compila il documento attivo corrente.

Debug dei progetti CMake

Per eseguire il debug di un progetto CMake, scegliere la configurazione preferita e premere F5. In alternativa, premere il pulsante Esegui sulla barra degli strumenti. Se il pulsante Esegui visualizza "Seleziona elemento di avvio", selezionare la freccia a discesa e scegliere la destinazione che si desidera eseguire. (In un progetto CMake, l'opzione "documento corrente" è valida solo per i file con estensione .cpp.)

Screenshot dell'elenco a discesa Seleziona elemento di avvio per un progetto CMake. È possibile selezionare il documento corrente o hello-cmake.exe

I comandi Esegui o F5 compilano innanzitutto il progetto se sono state apportate modifiche rispetto alla compilazione precedente.

È possibile personalizzare una sessione di debug di CMake impostando le proprietà nel file launch.vs.json. Per altre informazioni, vedere Configure CMake debugging sessions (Configurare le sessioni di debug di CMake).

Modifica dei CMakeLists.txt file

Per modificare un CMakeLists.txt file, fare clic con il pulsante destro del mouse sul file in Esplora soluzioni e scegliere Apri. Se si apportano modifiche al file, viene visualizzata una barra di stato gialla che informa che IntelliSense verrà aggiornato. Consente di annullare l'operazione di aggiornamento. Per informazioni su CMakeLists.txt, vedere la documentazione di CMake.

Screenshot di un file Di creazione elenchi C .txt da modificare in Visual Studio.

Il file contiene: project (hello-cmake), add_subdirectory (test), add_executable (hello hello.cpp) e install (TARGETS hello DESTINATION hello/bin). Un messaggio nella parte superiore della finestra indica che c più informazioni IntelliSense verranno aggiornate al termine della generazione della cache da parte di C Make.

Non appena si salva il file, viene eseguito nuovamente e automaticamente il passaggio di configurazione che visualizza le informazioni nella finestra Output. Gli errori e gli avvisi vengono visualizzati nella finestra Elenco errori o Output. Fare doppio clic su un errore nell'elenco errori per passare alla riga che causa l'errore in CMakeLists.txt.

Screenshot di un errore C Nell'elenco degli errori di Visual Studio.

Viene evidenziato un messaggio di errore C Nella riga 3 di CMakeLists.txt. I dettagli sono che C Make non riesce a trovare un file di configurazione del pacchetto fornito da sqlite3. C Make looked for it in CMAKE_MODULE_PATH but couldn't find it.C Make looked for it in CMAKE_MODULE_PATH but't find it. Il suggerimento consiste nell'aggiungere il prefisso di installazione 'sqlite3' a CMAKE_PREFIX_PATH o impostare sqlite3_DIR su una directory contenente sqlite3Config.cmake e/o sqlitet3-config.cmake.

Fase di configurazione di CMake

Quando vengono apportate modifiche significative ai CMakeSettings.json file o ai CMakeLists.txt file, Visual Studio esegue automaticamente il passaggio di configurazione di CMake. Se il passaggio di configurazione termina senza errori, le informazioni raccolte sono disponibili in IntelliSense C++ e nei servizi di linguaggio. Viene usato anche nelle operazioni di compilazione e debug.

Più progetti CMake potrebbero usare lo stesso nome di configurazione CMake( ad esempio, x86-Debug). Tutti vengono configurati e compilati (nella propria cartella radice di compilazione) quando questa configurazione è selezionata. È possibile eseguire il debug delle destinazioni da tutti i progetti CMake che partecipano alla configurazione CMake.

Screenshot del menu principale di Visual Studio, aprire Solo compilazione CMake > .

Il menu di scelta rapida mostra cosa può essere predefinito in questo caso hello-cmake-a \ hello-cmake.exe (Project hello-cmake) e hello-cmake-b\hello-cmake.exe (Project hello-cmake). Quest'ultimo è evidenziato.

È possibile limitare le compilazioni e le sessioni di debug a un subset dei progetti nell'area di lavoro. Creare una nuova configurazione con un nome univoco nel CMakeSettings.json file. Applicare quindi la configurazione solo a tali progetti. Quando questa configurazione è selezionata, IntelliSense e i comandi di compilazione e debug si applicano solo a tali progetti specificati.

Risoluzione degli errori di cache CMake

Se sono necessarie altre informazioni sullo stato della cache CMake per diagnosticare un problema, aprire il menu principale di CMake o il CMakeLists.txt menu di scelta rapida in Esplora soluzioni eseguire uno di questi comandi:

  • Visualizza cache apre il CMakeCache.txt file dalla cartella radice di compilazione nell'editor. Eventuali modifiche apportate qui vengono CMakeCache.txt cancellate se si pulisce la cache. Per apportare modifiche che vengono mantenute dopo la pulizia della cache, vedere Personalizzare le impostazioni di CMake.

  • Apri cartella cache apre una finestra di Explorer corrispondente alla cartella radice di compilazione.

  • Pulisci cache elimina la cartella radice di compilazione in modo che la fase successiva di configurazione di CMake inizi da una cache pulita.

  • Genera cache forza l'esecuzione del passaggio di generazione anche se Visual Studio considera l'ambiente aggiornato.

La generazione automatica della cache può essere disabilitata nella finestra di dialogo Strumenti > Opzioni > CMake > Generale .

Compilazione di file singoli

Per compilare un singolo file in un progetto CMake, fare clic con il pulsante destro del mouse sul file in Esplora soluzioni. Scegliere Compila dal menu a comparsa. È anche possibile compilare il file attualmente aperto nell'editor usando il menu CMake principale:

Screenshot del menu di scelta rapida Compilazione CMake > . Contiene una voce: Bullet3Collision.

Eseguire CMake dalla riga di comando

Se CMake è stato installato dal programma di installazione di Visual Studio, è possibile eseguirlo dalla riga di comando seguendo questa procedura:

  1. Eseguire il file appropriato vsdevcmd.bat (x86/x64). Per altre informazioni, vedere Compilazione nella riga di comando.

  2. Passare alla cartella di output.

  3. Eseguire CMake per compilare o configurare l'app.

In Visual Studio 2015, gli utenti di Visual Studio potevano usare un generatore CMake per generare file di progetto MSBuild, che l'IDE usava successivamente per IntelliSense, navigazione e compilazione.

Vedi anche

Esercitazione: Creare progetti multipiattaforma C++ in Visual Studio
Configurare un progetto CMake per Linux
Connettersi al computer Linux remoto
Personalizzare le impostazioni di compilazione di CMake
CMakeSettings.json riferimento allo schema
Configurare le sessioni di debug di CMake
Distribuire, eseguire e sottoporre a debug il progetto Linux
Informazioni di riferimento sulle configurazioni predefinite CMake
vcpkg nei progetti CMake
Installare e usare pacchetti con CMake in Visual Studio