CMakePresets.json e CMakeUserPresets.json mappe fornitore Microsoft

CMake supporta due file, CMakePresets.json e CMakeUserPresets.json, che consentono agli utenti di specificare opzioni comuni di configurazione, compilazione e test e condividerle con altri utenti.

CMakePresets.json e CMakeUserPresets.json possono essere usati per eseguire l'unità CMake in Visual Studio, in Visual Studio Code, in una pipeline di integrazione continua (CI) e dalla riga di comando.

CMakePresets.json è progettato per salvare compilazioni a livello di progetto ed CMakeUserPresets.json è destinato agli sviluppatori per salvare le proprie build locali. Lo schema per entrambi i file è identico.

CMakePresets.json e CMakeUserPresets.json il fornitore del supporto esegue il mapping per archiviare informazioni specifiche del fornitore. Microsoft gestisce due mappe fornitore con opzioni specifiche di Visual Studio e Visual Studio Code. Qui vengono documentato due mappe dei fornitori Microsoft e macro fornitore. Per altre informazioni sul resto dello schema, vedere la documentazione ufficiale di CMake. Include informazioni su Configura set di impostazioni, set di impostazioni di compilazione e set di impostazioni di test.

Per altre informazioni su come usare CMakePresets.json in Visual Studio, vedere Configurare e compilare con i set di impostazioni di CMake in Visual Studio

Per altre informazioni su come usare CMakePresets.json in Visual Studio Code, vedere Configurare e compilare con i set di impostazioni di CMake in VS Code

Mappa fornitore di Visual Studio Impostazioni

Una mappa fornitore con l'URI microsoft.com/VisualStudioSettings/CMake/<version> del fornitore è consentita per configurare il set di impostazioni e contiene opzioni specifiche per l'integrazione di CMake in Visual Studio e Visual Studio Code. Tutte le opzioni nella mappa fornitore si applicano a Visual Studio. Le opzioni applicabili sia a Visual Studio che a Visual Studio Code sono state contrassegnate in modo esplicito.

Tutte le impostazioni nella mappa fornitore di Visual Studio Impostazioni sono facoltative e ereditate da Configura set di impostazioni specificati dalla inherits chiave. Solo le opzioni modificate vengono scritte nel file. La mappa fornitore di Visual Studio Impostazioni è supportata sia da che CMakeUserPresets.jsonda CMakePresets.json .

Le opzioni nella mappa fornitore di Visual Studio Impostazioni non influiscono sulla costruzione della riga di comando CMake o CTest. È quindi possibile usare lo stesso CMakePresets.json file per eseguire l'unità CMake con Visual Studio, Visual Studio Code e dalla riga di comando. Le eccezioni sono le cacheRoot opzioni e cmakeGenerateCommand . Queste opzioni sono specifiche dello scenario Apri cache esistente in Visual Studio e non possono essere riprodotte dalla riga di comando.

Impostazione Descrizione
hostOS Matrice di sistemi operativi supportati. I valori accettati sono Windows, Linuxe macOS.

Il valore di hostOS viene usato da Visual Studio e Visual Studio Code per nascondere Configura set di impostazioni che non si applicano al sistema operativo del sistema di destinazione e offrono un'esperienza utente migliore.

Se hostOS non è specificato, Visual Studio e Visual Studio Code visualizzeranno sempre tutti i set di impostazioni configurati per la selezione. Questo campo può anche essere una stringa, equivalente a una matrice contenente una stringa

Questa opzione è supportata sia da Visual Studio che da Visual Studio Code.
intelliSenseMode Specifica la modalità usata per il calcolo delle informazioni intelliSense in Visual Studio con il formato <target>-<toolset>-<arch>.

Valori accettati:

android-clang-arm
android-clang-arm64
android-clang-x6
android-clang-x86
ios-clang-ar
ios-clang-arm64
ios-clang-x6
ios-clang-x86
linux-gcc-arm
linux-gcc-x64
linux-gcc-x86
windows-clang-arm
windows-clang-arm64
windows-clang-x64
windows-clang-x86
windows-msvc-arm
windows-msvc-arm64
windows-msvc-x64
windows-msvc-x86

Se intelliSenseMode non è specificato, Visual Studio usa la modalità IntelliSense corrispondente ai compilatori e all'architettura di destinazione specificati. intelliSenseMode viene spesso usato per fornire IntelliSense migliorato per la compilazione incrociata.

In Visual Studio 2019 è necessario specificare in modo esplicito una modalità IntelliSense clang durante la compilazione con clang o clang-cl.
intelliSenseOptions Mappa delle opzioni di configurazione di IntelliSense aggiuntive.

useCompilerDefaultsbool: oggetto che specifica se usare l'impostazione predefinita del compilatore definisce e include i percorsi per IntelliSense. Deve essere false solo se i compilatori in uso non supportano argomenti di tipo gcc. Il valore predefinito è true.

additionalCompilerArgs: matrice di opzioni aggiuntive per controllare IntelliSense in Visual Studio. Questa opzione supporta l'espansione di macro.
enableMicrosoftCodeAnalysis Oggetto bool che abilita l'analisi del codice Microsoft in Visual Studio durante la compilazione con cl o clang-cl. Il valore predefinito è false.
codeAnalysisRuleset Specifica il set di regole da usare durante l'esecuzione dell'analisi del codice Microsoft in Visual Studio. È possibile usare un percorso di un file del set di regole o il nome di un file del set di regole installato con Visual Studio. Questa opzione supporta l'espansione di macro.
disableExternalAnalysis Oggetto bool che specifica se l'analisi del codice deve essere eseguita in intestazioni esterne in Visual Studio.
codeAnalysisExternalRuleset Specifica il set di regole da usare quando si esegue l'analisi del codice Microsoft nell'intestazione esterna in Visual Studio. È possibile usare un percorso di un file del set di regole o il nome di un file del set di regole installato con Visual Studio. Questa opzione supporta l'espansione di macro.
enableClangTidyCodeAnalysis Valore bool che abilita l'analisi del codice clang-tidy in Visual Studio durante la compilazione con clang-cl. Il valore predefinito è false.
clangTidyChecks Elenco delimitato da virgole degli avvisi passati a clang-tidy durante l'esecuzione dell'analisi del codice clang-tidy in Visual Studio. I caratteri jolly sono consentiti e il - prefisso rimuoverà i controlli.
cacheRoot Specifica il percorso di una cache CMake. Questa directory deve contenere un file esistente CMakeCache.txt . Questa chiave è supportata solo dallo scenario Apri cache esistente in Visual Studio. Questa opzione supporta l'espansione di macro.
cmakeGenerateCommand Strumento da riga di comando (specificato come programma della riga di comando e argomenti, ad esempio , gencache.bat debug) per generare la cache CMake. Questo comando viene eseguito nella shell usando l'ambiente specificato del set di impostazioni quando viene richiamata la configurazione di CMake. Questa chiave è supportata solo dallo scenario Apri cache esistente in Visual Studio. Questa opzione supporta l'espansione di macro.

Mappa fornitore di Visual Studio Remote Impostazioni

Una mappa fornitore con l'URI microsoft.com/VisualStudioRemoteSettings/CMake/<version> del fornitore è consentita per impostazione predefinita e contiene opzioni specifiche per lo sviluppo remoto in Visual Studio. Lo sviluppo remoto significa richiamare CMake in una connessione SSH remota o WSL. Nessuna delle opzioni nella mappa fornitore di Visual Studio Remote Impostazioni si applica a Visual Studio Code.

Tutte le impostazioni nella mappa fornitore di Visual Studio Remote Impostazioni sono facoltative e ereditate da Configura set di impostazioni specificati dalla inherits chiave. Solo le opzioni modificate vengono scritte nel file. La mappa del fornitore di Visual Studio Remote Impostazioni è supportata sia da che CMakeUserPresets.jsonda CMakePresets.json .

Le opzioni nella mappa fornitore di Visual Studio Impostazioni non influiscono sulla costruzione della riga di comando CMake o CTest. È quindi possibile usare lo stesso CMakePresets.json file per eseguire l'unità CMake con Visual Studio, Visual Studio Code e dalla riga di comando.

Molte delle opzioni nella mappa del fornitore di Visual Studio Remote Impostazioni vengono ignorate quando la destinazione è WSL1. Poiché il set di strumenti WSL1 esegue tutti i comandi in locale e si basa sulle unità windows montate nella /mnt cartella per accedere ai file di origine locali da WSL1. Non è necessaria alcuna copia del file di origine. Le opzioni ignorate quando la destinazione WSL1 è stata contrassegnata in modo esplicito.

Impostazione Descrizione
sourceDir Percorso della directory nel sistema remoto in cui verrà copiato il progetto. Il valore predefinito è $env{HOME}/.vs/$ms{projectDirName}. Questa opzione supporta l'espansione di macro.

Negli scenari di copia remota, la macro ${sourceDir} restituisce la directory di origine del progetto nel sistema remoto e non la directory di origine del progetto nel computer Windows. Gli scenari di copia remota includono la destinazione di una connessione SSH remota. In questi casi, la directory di origine del progetto nel sistema remoto è determinata dal valore di sourceDir nella mappa fornitore di Visual Studio Remote Impostazioni. Questa opzione viene ignorata quando la destinazione è WSL1.
copySources Se true, Visual Studio copia le origini da Windows al sistema remoto. Impostare su false se si gestisce manualmente la sincronizzazione dei file. Il valore predefinito è true. Questa opzione viene ignorata quando la destinazione è WSL1.
copySourcesOptions Oggetto di opzioni correlate alla copia di origine da Windows al sistema remoto. Questo oggetto viene ignorato quando la destinazione è WSL1.

copySourcesOptions.exclusionList: elenco di percorsi da escludere durante la copia dei file di origine nel sistema remoto. Un percorso può essere il nome di un file o di una directory o un percorso relativo dalla radice della copia. Il valore predefinito è [ ".vs", ".git", "out" ]. Questa opzione supporta l'espansione di macro.

copySourcesOptions.method: metodo usato per copiare i file di origine nel sistema remoto. I valori accettati sono rsync e sftp. Il valore predefinito è rsync.

copySourcesOptions.concurrentCopies: numero di copie simultanee usate durante la sincronizzazione delle origini nel sistema remoto. Il valore predefinito è 5.

copySourcesOptions.outputVerbosity: livello di dettaglio delle operazioni di copia di origine nel sistema remoto. I livelli accettati sono Normal, Verbosee Diagnostic. Il valore predefinito è Normal.
rsyncCommandArgs Elenco di argomenti della riga di comando passati a rsync. Il valore predefinito è [ "-t", "--delete", "--delete-excluded" ]. Questa opzione supporta l'espansione delle macro e viene ignorata quando la destinazione è WSL1.
copyBuildOutput Specifica se copiare l'output della compilazione dal sistema remoto a Windows. Il valore predefinito è false. Questa opzione viene ignorata quando la destinazione è WSL1.
copyOptimizations Oggetto di opzioni correlate alle ottimizzazioni della copia di origine. Queste opzioni vengono ignorate quando la destinazione è WSL1.

copyOptimizations.maxSmallChange: numero massimo di file da copiare usando sftp anziché rsync. Il valore predefinito è 10.

copyOptimizations.useOptimizations: specifica le ottimizzazioni della copia in uso. I valori accettati non sono ottimizzazioni di copia (None), ottimizzazioni solo rsync (RsyncOnly) o rsync e sftp ottimizzazioni (RsyncAndSftp). Il valore predefinito è RsyncAndSftp.

copyOptimizations.rsyncSingleDirectoryCommandArgs: elenco di argomenti della riga di comando passati a rsync durante la copia del contenuto di una singola directory nel sistema remoto. Il valore predefinito è [ "-t", "-d" ]. Questa opzione supporta l'espansione di macro.
copyAdditionalIncludeDirectoriesList Elenco di percorsi delle directory di intestazione remota da copiare localmente per IntelliSense. Questa opzione supporta l'espansione di macro.
copyExcludeDirectoriesList Elenco di percorsi delle directory di intestazione remota da non copiare in locale per IntelliSense. Questa opzione supporta l'espansione di macro.
forceWSL1Toolset Se true, Visual Studio userà sempre il set di strumenti WSL1 quando la destinazione è WSL da Visual Studio. Il set di strumenti WSL1 esegue tutti i comandi in locale e si basa su unità Windows montate nella /mnt cartella per accedere ai file di origine locali da WSL. Queste opzioni possono essere più lente con WSL2. Il valore predefinito è false.

Il set di strumenti WSL1 verrà sempre usato in Visual Studio 2019 versione 16.10. Questa opzione sarà rilevante una volta disponibile il supporto nativo per WSL2.

Eventi di pre-compilazione e post-compilazione remoti

Le opzioni per un remotePrebuildEvent oggetto e remotePostbuildEvent sono state deprecate con l'adozione di CMakePresets.json.

Codificare gli eventi di pre-compilazione, pre-collegamento e post-compilazione nell'oggetto CMakeLists.txt usando add_custom_command. Garantisce lo stesso comportamento durante la compilazione con Visual Studio e dalla riga di comando.

Se è necessario un comportamento specifico di Visual Studio, è possibile aggiungere un'attività remota personalizzata in tasks.vs.json. Per iniziare, fare clic con il pulsante destro del mouse sulla radice CMakeLists.txt nella Esplora soluzioni da Visualizzazione cartelle e scegliere Configura attività. È quindi possibile aggiungere una nuova attività remota al tasks.vs.json file.

L'attività remota seguente crea una directory denominata test nel sistema Linux remoto:

{
      "taskLabel": "mkdir",
      "appliesTo": "CMakeLists.txt",
      "type": "remote",
      "command": "mkdir test",
      "remoteMachineName": "localhost"
  }

Fare clic con il pulsante destro del mouse su uno qualsiasi CMakeLists.txt e selezionare l'opzione mkdir per eseguire questa attività.

Il valore di remoteMachineName deve corrispondere al nome host di una connessione nella Gestione connessioni.

Macro del fornitore Microsoft

Le due mappe dei fornitori Microsoft e Visual Studio SettingsVisual Studio Remote Settings, supportano tutte le macro definite da CMake. Le mappe fornitore supportano tutte le macro definite da CMake. Per altre informazioni, vedere Espansione macro cmake-presets. Tutte le macro e le variabili di ambiente vengono espanse prima di essere passate a CMake.

Visual Studio supporta macro fornitore con il prefisso ms. Le macro dei fornitori Microsoft possono essere usate solo nelle mappe dei fornitori Microsoft. CMake non può usare set di impostazioni con macro fornitore all'esterno di una mappa fornitore.

Macro Descrizione
$ms{projectDirName} Restituisce il nome della cartella aperta in Visual Studio. Questa macro viene utilizzata per impostare il valore predefinito di in scenari di sourceDir copia remota. Questa macro non è supportata da Visual Studio Code. Utilizzare invece ${sourceDirName}.

Variabili di ambiente

Macro Descrizione
$env{<variable-name>}
$penv{<variable-name>}
Fare riferimento alle variabili di ambiente usando questa sintassi supportata da CMake. Per altre informazioni, vedere Espansione macro cmake-presets.

Macro deprecate

Alcune macro supportate da CMakeSettings.json sono state deprecate con l'adozione di CMakePresets.json.

Usare le macro supportate da CMake per costruire i percorsi dei file. Quando si usano le macro, garantisce che lo stesso CMakePresets.json file funzioni all'interno di Visual Studio e dalla riga di comando.

Macro deprecata Consiglio
${projectFile} ${sourceDir}/CMakeLists.txt
${thisFile} ${sourceDir}/CMakePresets.json

Sintassi della shell accettata

Usare la $env{HOME} sintassi per fare riferimento $HOME quando si creano percorsi Linux nelle mappe dei fornitori Microsoft.