Condividi tramite


Personalizzare le impostazioni di compilazione 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.

Se si mantengono progetti che usano un file per la CMakeSettings.json configurazione di compilazione CMake, Visual Studio 2019 e versioni successive forniscono un editor delle impostazioni CMake. L'editor consente di aggiungere configurazioni CMake e personalizzare facilmente le impostazioni. Si intende essere un'alternativa più semplice alla modifica manuale del CMakeSettings.json file. Tuttavia, se si preferisce modificare direttamente il file, è possibile selezionare il collegamento Modifica JSON in alto a destra dell'editor.

Per aprire l'editor delle impostazioni di CMake, selezionare l'elenco a discesa Configurazione nella barra degli strumenti principale e scegliere Gestisci configurazioni.

Screenshot dell'elenco a discesa della configurazione di CMake. La funzionalità Gestisci configurazioni è evidenziata.

È ora possibile visualizzare l'Editor impostazioni con le configurazioni installate a sinistra.

Screenshot dell'editor delle impostazioni di CMake.

Il riquadro sinistro mostra le configurazioni installate (x86-Debug). Il riquadro destro mostra le impostazioni per la configurazione selezionata. Le impostazioni includono il nome di configurazione, il tipo di configurazione (impostato su Debug), il set di strumenti (impostato su msvc_x86), il file della toolchain CMake (vuoto), la radice di compilazione (contiene ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), gli argomenti dei comandi CMake (vuoto) e gli argomenti dei comandi di compilazione (-v).

Visual Studio offre una x64-Debug configurazione per impostazione predefinita. È possibile aggiungere altre configurazioni scegliendo il segno più verde. Le impostazioni visualizzate nell'editor possono variare a seconda della configurazione selezionata.

Le opzioni scelte nell'editor vengono scritte in un file denominato CMakeSettings.json. Questo file fornisce gli argomenti della riga di comando e le variabili di ambiente che vengono passate a CMake quando si compilano i progetti. Visual Studio non modifica CMakeLists.txt mai automaticamente. Usando CMakeSettings.json è possibile personalizzare la compilazione tramite Visual Studio lasciando invariati i file di progetto CMake in modo che altri utenti del team possano utilizzarli con qualsiasi strumento in uso.

Impostazioni generali di CMake

Le impostazioni seguenti sono disponibili sotto l'intestazione Generale:

Nome configurazione

Corrisponde all'impostazione name. Questo nome viene visualizzato nell'elenco a discesa configurazione C++. È possibile usare la macro ${name} per la composizione di altri valori delle proprietà, come i percorsi.

Tipo configurazione

Corrisponde all'impostazione configurationType. Definisce il tipo di configurazione della build per il generatore selezionato. I valori attualmente supportati sono Debug, MinSizeRel, Release e RelWithDebInfo. Esegue il mapping a CMAKE_BUILD_TYPE.

Set di strumenti

Corrisponde all'impostazione inheritedEnvironments. Definisce l'ambiente del compilatore usato per compilare la configurazione selezionata. I valori supportati dipendono dal tipo di configurazione. Per creare un ambiente personalizzato, scegliere il collegamento Modifica JSON nell'angolo superiore destro dell'editor impostazioni e modificare direttamente il CMakeSettings.json file.

File della toolchain di CMake

Percorso del file toolchain CMake. Questo percorso viene passato a CMake come "-DCMAKE_TOOLCHAIN_FILE = <filepath>. I file toolchain specificano i percorsi dei compilatori e delle utilità toolchain e altre informazioni relative alla piattaforma di destinazione e al compilatore. Per impostazione predefinita, Visual Studio usa il file toolchain vcpkg se questa impostazione non è specificata.

Radice compilazione

Corrisponde a buildRoot. Esegue il mapping a CMAKE_BINARY_DIRe specifica dove creare la cache CMake. La cartella specificata viene creata se non esiste.

Gli argomenti del comando

Le impostazioni seguenti sono disponibili sotto l'intestazione Argomenti del comando:

Argomenti del comando CMake

Corrisponde a cmakeCommandArgs. Specifica altre opzioni della riga di comando passate a CMake.

Argomenti del comando Build

Corrisponde a buildCommandArgs. Specifica più opzioni da passare al sistema di compilazione sottostante. Ad esempio, passando -v quando si usa il generatore Ninja forza Ninja a restituire le righe di comando.

Argomenti del comando CTest

Corrisponde a ctestCommandArgs. Specifica altre opzioni della riga di comando da passare a CTest durante l'esecuzione dei test.

Impostazioni generali per le compilazioni remote

Per le configurazioni come Linux che usano compilazioni remote, sono disponibili anche le impostazioni seguenti:

rsync argomenti di comando

Opzioni della riga di comando aggiuntive passate a rsync, uno strumento di copia file veloce e versatile.

Variabili e cache CMake

Queste impostazioni consentono di impostare le variabili CMake e salvarle in CMakeSettings.json. Vengono passati a CMake in fase di compilazione ed eseguono l'override di qualsiasi valore nel CMakeLists.txt file. È possibile usare questa sezione nello stesso modo in cui si potrebbe usare CMakeGUI per visualizzare un elenco di tutte le variabili CMake disponibili per la modifica. Scegliere il pulsante Salva e genera cache per visualizzare un elenco di tutte le variabili CMake disponibili per la modifica, incluse le variabili avanzate (in base a CMakeGUI). È possibile filtrare l'elenco in base al nome della variabile.

Corrisponde alle variabili. Contiene una coppia nome-valore di variabili CMake passate come -D name=value A CMake. Se le istruzioni di compilazione del progetto CMake specificano l'aggiunta di qualsiasi variabile direttamente al file di cache CMake, è consigliabile aggiungerle qui.

Impostazioni avanzate

Generatore CMake

Corrisponde al generatore. Esegue il mapping al commutatore CMake -G e specifica il generatore CMake da usare. Questa proprietà può essere usata anche come macro, ${generator}, durante la composizione di altri valori di proprietà. Visual Studio supporta attualmente i generatori CMake seguenti:

  • "Ninja"
  • "Makefile Unix"
  • "Visual Studio 16 2019"
  • "Visual Studio 16 2019 Win64"
  • "Visual Studio 16 2019 ARM"
  • "Visual Studio 15 2017"
  • "Visual Studio 15 2017 Win64"
  • "Visual Studio 15 2017 ARM"
  • "Visual Studio 14 2015"
  • "Visual Studio 14 2015 Win64"
  • "Visual Studio 14 2015 ARM"

Poiché Ninja è progettato per velocità di compilazione veloci anziché flessibilità e funzione, viene impostato come predefinito. Tuttavia, alcuni progetti CMake potrebbero non essere in grado di compilare correttamente usando Ninja. In tal caso, è possibile indicare a CMake di generare invece un progetto di Visual Studio.

Modalità IntelliSense

Modalità IntelliSense usata dal motore IntelliSense. Se non è selezionata alcuna modalità, Visual Studio eredita la modalità dal set di strumenti specificato.

Directory di installazione

Directory in cui CMake installa le destinazioni. Esegue il mapping a CMAKE_INSTALL_PREFIX.

Eseguibile di CMake

Percorso completo dell'eseguibile del programma CMake, incluso il nome e l'estensione del file. Consente di usare una versione personalizzata di CMake con Visual Studio. Per le compilazioni remote, specificare il percorso di CMake nel computer remoto.

Per le configurazioni come Linux che usano compilazioni remote, sono disponibili anche le impostazioni seguenti:

Radice di CMakeLists.txt in computer remoto

Directory nel computer remoto che contiene il file radice CMakeLists.txt .

Radice di installazione in computer remoto

Directory nel computer remoto in cui CMake installa le destinazioni. Esegue il mapping a CMAKE_INSTALL_PREFIX.

Copia origini in computer remoto

Specifica se copiare i file di origine nel computer remoto e consente di specificare se usare rsync o sftp.

Modificare direttamente CMakeSettings.json

È anche possibile modificare CMakeSettings.json direttamente per creare configurazioni personalizzate. L'Editor impostazioni dispone di un pulsante Modifica JSON nell'angolo in alto a destra che apre il file per la modifica.

Nell'esempio seguente viene illustrata una configurazione campione, che è possibile usare come punto di partenza:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

IntelliSense JSON consente di modificare il file CMakeSettings.json:

Screenshot del popup CMake JSON IntelliSense nell'editor.

L'editor JSON informa anche quando si scelgono impostazioni incompatibili.

Per altre informazioni su ognuna delle proprietà nel file, vedere Informazioni di riferimento sullo schema CMakeSettings.json.

Visual Studio 2017 fornisce diverse configurazioni CMake che definiscono il modo in cui viene richiamato CMake per creare la cache CMake per un determinato progetto. Per aggiungere una nuova configurazione, selezionare l'elenco a discesa della configurazione nella barra degli strumenti e scegliere Gestisci configurazioni:

Screenshot di Gestisci configurazioni selezionate nell'elenco a discesa.

È possibile scegliere dall'elenco di configurazioni predefinite:

Aggiungere la configurazione all'elenco delle finestre di dialogo Impostazioni CMake delle configurazioni predefinite.

La prima volta che si seleziona una configurazione, Visual Studio crea un CMakeSettings.json file nella cartella radice del progetto. Questo file viene usato per ricreare il file di cache CMake, ad esempio dopo un'operazione di pulizia.

Per aggiungere un'altra configurazione, fare clic con il pulsante destro del mouse CMakeSettings.json e scegliere Aggiungi configurazione.

Screenshot del menu di scelta rapida con l'opzione Aggiungi configurazione selezionata.

È anche possibile modificare il file usando l'Editor impostazioni CMake. Fare clic con il pulsante destro del mouse su CMakeSettings.json in Esplora soluzioni e scegliere Modifica impostazioni CMake. In alternativa, selezionare Gestisci configurazioni dall'elenco a discesa della configurazione nella parte superiore della finestra dell'editor.

È anche possibile modificare CMakeSettings.json direttamente per creare configurazioni personalizzate. Nell'esempio seguente viene illustrata una configurazione campione, che è possibile usare come punto di partenza:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

IntelliSense JSON consente di modificare il file CMakeSettings.json:

Screenshot del popup CMake JSON IntelliSense nell'editor.

Il popup JSON IntelliSense per le "configurazioni" mostra buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, tra gli altri.

Per altre informazioni su ognuna delle proprietà nel file, vedere CMakeSettings.json Informazioni di riferimento sullo schema.

Vedi anche

Progetti CMake in Visual Studio
Configurare un progetto CMake per Linux
Connettersi al computer Linux remoto
Configurare le sessioni di debug di CMake
Distribuire, eseguire e sottoporre a debug il progetto Linux
Informazioni di riferimento sulle configurazioni predefinite CMake