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 delle impostazioni di Visual Studio
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 delle impostazioni di Visual Studio sono facoltative e ereditate da Configura set di impostazioni specificati dalla inherits
chiave. Solo le opzioni modificate vengono scritte nel file. La mappa fornitore delle impostazioni di Visual Studio è supportata sia da che CMakeUserPresets.json
da CMakePresets.json
.
Le opzioni nella mappa fornitore delle impostazioni di Visual Studio 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 , Linux e 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 stringaQuesta 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.useCompilerDefaults bool : 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 impostazioni remote di Visual Studio
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 impostazioni remote di Visual Studio si applica a Visual Studio Code.
Tutte le impostazioni nella mappa fornitore impostazioni remote di Visual Studio sono facoltative e ereditate da Configura set di impostazioni specificati dalla inherits
chiave. Solo le opzioni modificate vengono scritte nel file. La mappa fornitore delle impostazioni remote di Visual Studio è supportata sia da che CMakeUserPresets.json
da CMakePresets.json
.
Le opzioni nella mappa fornitore delle impostazioni di Visual Studio 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 fornitore impostazioni remote di Visual Studio 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 nella mappa fornitore delle impostazioni remote di sourceDir Visual Studio. 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 , Verbose e 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. L’impostazione predefinita è 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 Settings
Visual 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 | Elemento consigliato |
---|---|
${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.