CMakePresets.json
a CMakeUserPresets.json
mapy dodavatelů Microsoftu
CMake podporuje dva soubory a CMakePresets.json
CMakeUserPresets.json
umožňují uživatelům určit běžné možnosti konfigurace, sestavení a testování a sdílet je s ostatními.
CMakePresets.json
a CMakeUserPresets.json
lze ji použít k řízení CMake v sadě Visual Studio, v editoru Visual Studio Code, v kanálu kontinuální integrace (CI) a z příkazového řádku.
CMakePresets.json
je určen k ukládání buildů pro celý projekt a CMakeUserPresets.json
je určený pro vývojáře, aby si uložili vlastní místní buildy. Schéma obou souborů je stejné.
CMakePresets.json
a CMakeUserPresets.json
dodavatel podpory mapuje informace specifické pro dodavatele. Microsoft udržuje dvě mapy dodavatelů s možnostmi specifickými pro Visual Studio a Visual Studio Code. Tady dokumentujeme dvě mapy dodavatelů Microsoftu a makra dodavatele. Další informace o zbytku schématu najdete v oficiální dokumentaci CMake. Obsahuje informace o konfiguraci předvoleb, předvolbách sestavení a předvolbách testů.
Další informace o použití CMakePresets.json
v sadě Visual Studio najdete v tématu Konfigurace a sestavení pomocí předvoleb CMake v sadě Visual Studio.
Další informace o použití CMakePresets.json
v editoru Visual Studio Code najdete v tématu Konfigurace a sestavení pomocí předvoleb CMake v editoru VS Code.
Mapa dodavatele nastavení sady Visual Studio
Jedna mapa dodavatele s identifikátorem URI microsoft.com/VisualStudioSettings/CMake/<version>
dodavatele je povolená pro každou konfiguraci přednastavení a obsahuje možnosti specifické pro integraci CMake v sadě Visual Studio a editoru Visual Studio Code. Všechny možnosti na mapě dodavatele platí pro Visual Studio. Možnosti, které platí pro Visual Studio i Visual Studio Code, byly explicitně označené.
Všechna nastavení v mapě dodavatele nastavení sady Visual Studio jsou volitelná a zděděná z konfigurace předvoleb určených inherits
klíčem. Do souboru se zapisují jenom možnosti, které byly změněny. Mapa dodavatele nastavení sady Visual Studio je podporována oběma CMakePresets.json
a CMakeUserPresets.json
.
Možnosti na mapě dodavatele nastavení sady Visual Studio nemají vliv na konstrukci příkazového řádku CMake nebo CTest. Je to proto, aby se stejný CMakePresets.json
soubor mohl použít k řízení CMake pomocí sady Visual Studio, editoru Visual Studio Code a z příkazového řádku. Výjimky jsou možnosti cacheRoot
a cmakeGenerateCommand
možnosti. Tyto možnosti jsou specifické pro scénář Otevřít existující mezipaměť v sadě Visual Studio a nelze je reprodukovat z příkazového řádku.
Nastavení | Popis |
---|---|
hostOS |
Pole podporovaných operačních systémů (OS). Přijaté hodnoty jsou Windows , Linux a macOS .Hodnotu hostOS používá Visual Studio a Visual Studio Code ke skrytí předvoleb konfigurace, které se nevztahují na operační systém cílového systému a poskytují lepší uživatelské prostředí.Pokud hostOS není zadaný, zobrazí visual Studio a Visual Studio Code vždy všechny předvolby konfigurace pro výběr. Toto pole může být také řetězec, který je ekvivalentní poli obsahujícímu jeden řetězec.Tuto možnost podporuje Visual Studio i Visual Studio Code. |
intelliSenseMode |
Určuje režim používaný pro výpočet informací IntelliSense v sadě Visual Studio s formátem <target>-<toolset>-<arch> . Přijaté hodnoty: 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 Pokud intelliSenseMode není zadaný, visual Studio používá režim IntelliSense, který odpovídá zadaným kompilátorům a cílové architektuře. intelliSenseMode se často používá k poskytování vylepšené technologie IntelliSense pro křížovou kompilaci.V sadě Visual Studio 2019 musíte explicitně zadat režim clang IntelliSense při sestavování pomocí clang nebo clang-cl. |
intelliSenseOptions |
Mapa dalších možností konfigurace IntelliSenseuseCompilerDefaults : Určuje bool , jestli se má výchozí nastavení kompilátoru definovat a zahrnout cesty pro IntelliSense. Měly by být false pouze v případě, že používané kompilátory nepodporují argumenty ve stylu gcc. Výchozí hodnota true je .additionalCompilerArgs : Pole dalších možností pro řízení technologie IntelliSense v sadě Visual Studio. Tato možnost podporuje rozšíření maker. |
enableMicrosoftCodeAnalysis |
A bool , která umožňuje analýzu kódu Společnosti Microsoft v sadě Visual Studio při sestavování pomocí cl nebo clang-cl . Výchozí hodnota false je . |
codeAnalysisRuleset |
Určuje sadu pravidel, která se má použít při spouštění analýzy kódu Microsoftu v sadě Visual Studio. Můžete použít cestu k souboru sady pravidel nebo názvu souboru sady pravidel nainstalovaného v sadě Visual Studio. Tato možnost podporuje rozšíření maker. |
disableExternalAnalysis |
Určuje bool , jestli má analýza kódu běžet na externích hlavičkách v sadě Visual Studio. |
codeAnalysisExternalRuleset |
Určuje sadu pravidel, která se má použít při spouštění analýzy kódu Microsoftu v externí hlavičce v sadě Visual Studio. Můžete použít cestu k souboru sady pravidel nebo názvu souboru sady pravidel nainstalovaného v sadě Visual Studio. Tato možnost podporuje rozšíření maker. |
enableClangTidyCodeAnalysis |
Logická hodnota, která umožňuje analýzu kódu clang-tidy v sadě Visual Studio při sestavování pomocí clang-cl nástroje . Výchozí hodnota false je . |
clangTidyChecks |
Čárkami oddělený seznam upozornění předaných clang-tidy při spuštění analýzy kódu clang-tidy v sadě Visual Studio. Zástupné dokumentace jsou povolené a předpona odebere - kontroly. |
cacheRoot |
Určuje cestu k mezipaměti CMake. Tento adresář by měl obsahovat existující CMakeCache.txt soubor. Tento klíč podporuje pouze scénář Otevřít existující mezipaměť v sadě Visual Studio. Tato možnost podporuje rozšíření maker. |
cmakeGenerateCommand |
Nástroj příkazového řádku (určený jako program příkazového řádku a argumenty, gencache.bat debug například ) pro vygenerování mezipaměti CMake. Tento příkaz se spustí v prostředí pomocí zadaného prostředí přednastavení při vyvolání konfigurace CMake. Tento klíč podporuje pouze scénář Otevřít existující mezipaměť v sadě Visual Studio. Tato možnost podporuje rozšíření maker. |
Mapa dodavatele vzdáleného nastavení sady Visual Studio
Jedna mapa dodavatele s identifikátorem URI microsoft.com/VisualStudioRemoteSettings/CMake/<version>
dodavatele je povolená pro každou předvolbu konfigurace a obsahuje možnosti specifické pro vzdálený vývoj v sadě Visual Studio. Vzdálený vývoj znamená, že voláte CMake na vzdáleném připojení SSH nebo WSL. Žádná z možností na mapě dodavatele vzdáleného nastavení sady Visual Studio se nevztahuje na Visual Studio Code.
Všechna nastavení v mapě dodavatele vzdáleného nastavení sady Visual Studio jsou volitelná a zděděná z konfigurace předvoleb určených inherits
klíčem. Do souboru se zapisují jenom možnosti, které byly změněny. Mapa dodavatele vzdáleného nastavení sady Visual Studio je podporována oběma CMakePresets.json
a CMakeUserPresets.json
.
Možnosti na mapě dodavatele nastavení sady Visual Studio nemají vliv na konstrukci příkazového řádku CMake nebo CTest. Je to proto, aby se stejný CMakePresets.json
soubor mohl použít k řízení CMake pomocí sady Visual Studio, editoru Visual Studio Code a z příkazového řádku.
Mnoho možností na mapě dodavatele vzdáleného nastavení sady Visual Studio se při cílení na WSL1 ignoruje. Je to proto, že sada nástrojů WSL1 spouští všechny příkazy místně a spoléhá na jednotky Windows připojené pod složkou /mnt
pro přístup k místním zdrojovým souborům z WSL1. Není vyžadována žádná kopie zdrojového souboru. Možnosti, které jsou ignorovány při cílení na WSL1, byly explicitně označeny.
Nastavení | Popis |
---|---|
sourceDir |
Cesta k adresáři ve vzdáleném systému, kde bude projekt zkopírován. Výchozí hodnota $env{HOME}/.vs/$ms{projectDirName} je . Tato možnost podporuje rozšíření maker.Ve scénářích vzdáleného kopírování se makro ${sourceDir} vyhodnotí jako zdrojový adresář projektu ve vzdáleném systému, nikoli ve zdrojovém adresáři projektu na počítači s Windows. Scénáře vzdáleného kopírování zahrnují cílení na vzdálené připojení SSH. V těchto případech je zdrojový adresář projektu ve vzdáleném systému určen hodnotou v mapě dodavatele vzdáleného sourceDir nastavení sady Visual Studio. Tato možnost se při cílení na WSL1 ignoruje. |
copySources |
Pokud true sada Visual Studio zkopíruje zdroje ze systému Windows do vzdáleného systému. Nastavte, false pokud synchronizaci souborů spravujete sami. Výchozí hodnota true je . Tato možnost se při cílení na WSL1 ignoruje. |
copySourcesOptions |
Objekt možností souvisejících se zdrojovou kopií ze systému Windows do vzdáleného systému. Tento objekt se při cílení na WSL1 ignoruje.copySourcesOptions.exclusionList : Seznam cest, které se mají vyloučit při kopírování zdrojových souborů do vzdáleného systému. Cesta může být název souboru nebo adresáře nebo relativní cesta z kořenového adresáře kopie. Výchozí hodnota [ ".vs", ".git", "out" ] je . Tato možnost podporuje rozšíření maker.copySourcesOptions.method : Metoda používaná ke kopírování zdrojových souborů do vzdáleného systému. Přijaté hodnoty jsou rsync a sftp . Výchozí hodnota rsync je .copySourcesOptions.concurrentCopies : Počet souběžných kopií použitých při synchronizaci zdrojů do vzdáleného systému. Výchozí hodnota 5 je .copySourcesOptions.outputVerbosity : Úroveň podrobností operací kopírování zdroje do vzdáleného systému. Přijaté úrovně jsou Normal , Verbose a Diagnostic . Výchozí hodnota Normal je . |
rsyncCommandArgs |
Seznam argumentů příkazového řádku předaných .rsync Výchozí hodnota [ "-t", "--delete", "--delete-excluded" ] je . Tato možnost podporuje rozšíření maker a při cílení na WSL1 se ignoruje. |
copyBuildOutput |
Určuje, jestli se má kopírovat výstup sestavení ze vzdáleného systému zpět do Windows. Výchozí hodnota false je . Tato možnost se při cílení na WSL1 ignoruje. |
copyOptimizations |
Objekt možností souvisejících s optimalizací kopírování zdroje Tyto možnosti se při cílení na WSL1 ignorují.copyOptimizations.maxSmallChange : Maximální počet souborů, které se mají kopírovat pomocí protokolu sftp místo rsync. Výchozí hodnota je 10.copyOptimizations.useOptimizations : Určuje používané optimalizace kopírování. Přijaté hodnoty nejsou optimalizace kopírování (None ), optimalizace pouze rsync (RsyncOnly ) nebo optimalizace rsync a sftp (RsyncAndSftp ). Výchozí hodnota RsyncAndSftp je .copyOptimizations.rsyncSingleDirectoryCommandArgs : Seznam argumentů příkazového řádku předaných rsync při kopírování obsahu jednoho adresáře do vzdáleného systému. Výchozí hodnota [ "-t", "-d" ] je . Tato možnost podporuje rozšíření maker. |
copyAdditionalIncludeDirectoriesList |
Seznam cest ke vzdáleným adresářům hlaviček, které se mají zkopírovat místně pro IntelliSense. Tato možnost podporuje rozšíření maker. |
copyExcludeDirectoriesList |
Seznam cest ke vzdáleným adresářům hlaviček, které se nekopírovaly místně pro IntelliSense. Tato možnost podporuje rozšíření maker. |
forceWSL1Toolset |
Pokud true , Visual Studio bude při cílení na WSL ze sady Visual Studio vždy používat sadu nástrojů WSL1. Sada nástrojů WSL1 spouští všechny příkazy místně a spoléhá na jednotky Windows připojené pod složkou /mnt pro přístup k místním zdrojovým souborům z WSL. U WSL2 můžou být tyto možnosti pomalejší. Výchozí hodnota false je .Sada nástrojů WSL1 bude vždy použita v sadě Visual Studio 2019 verze 16.10. Tato možnost bude relevantní, jakmile bude k dispozici nativní podpora WSL2. |
Vzdálené události před sestavením a po sestavení
Možnosti a remotePrebuildEvent
remotePostbuildEvent
byly vyřazeny z přijetí CMakePresets.json
.
Zakódujte události předběžného sestavení, předběžného propojení a po sestavení ve vašem CMakeLists.txt
použití add_custom_command
. Zajišťuje stejné chování při sestavování pomocí sady Visual Studio a z příkazového řádku.
Pokud potřebujete chování specifické pro Visual Studio, můžete do souboru přidat vlastní vzdálenou úlohu tasks.vs.json
. Začněte tak, že kliknete pravým tlačítkem na kořen CMakeLists.txt
v Průzkumník řešení ze zobrazení složky a vyberete Konfigurovat úkoly. Do souboru pak můžete přidat novou vzdálenou úlohutasks.vs.json
.
Následující vzdálená úloha vytvoří adresář s názvem test ve vzdáleném systému Linux:
{
"taskLabel": "mkdir",
"appliesTo": "CMakeLists.txt",
"type": "remote",
"command": "mkdir test",
"remoteMachineName": "localhost"
}
Klikněte pravým tlačítkem myši na libovolný CMakeLists.txt
a vyberte možnost mkdir pro provedení tohoto úkolu.
Hodnota remoteMachineName
musí odpovídat názvu hostitele připojení v Správce připojení.
Makra dodavatele Microsoftu
Dva mapy Visual Studio Settings
dodavatelů Microsoftu a Visual Studio Remote Settings
podporují všechna makra definovaná nástrojem CMake. Naše mapy dodavatelů podporují všechna makra definovaná nástrojem CMake. Další informace naleznete v tématu cmake-přednastavení rozšíření makra. Před předáním do CMake se rozbalí všechna makra a proměnné prostředí.
Visual Studio podporuje makra dodavatelů s předponou ms
. Makra dodavatelů Microsoftu lze použít pouze v mapách dodavatelů Microsoftu. CMake nemůže používat přednastavení, která mají makra dodavatele mimo mapu dodavatele.
Makro | Popis |
---|---|
$ms{projectDirName} |
Vyhodnotí se jako název otevřené složky v sadě Visual Studio. Toto makro slouží k nastavení výchozí hodnoty ve scénářích vzdáleného sourceDir kopírování. Toto makro visual Studio Code nepodporuje. Místo toho použijte ${sourceDirName} . |
Proměnné prostředí
Makro | Popis |
---|---|
$env{<variable-name>} $penv{<variable-name>} |
Odkazovat na proměnné prostředí pomocí této syntaxe podporované nástrojem CMake. Další informace naleznete v tématu cmake-přednastavení rozšíření makra. |
Zastaralá makra
Několik maker, která byla podporována CMakeSettings.json
, byly vyřazeny z přijetí CMakePresets.json
.
K vytvoření cest k souborům použijte makra podporovaná nástrojem CMake. Když použijete makra, zajistí, aby stejný CMakePresets.json
soubor fungoval v sadě Visual Studio a z příkazového řádku.
Zastaralé makro | Doporučení |
---|---|
${projectFile} |
${sourceDir}/CMakeLists.txt |
${thisFile} |
${sourceDir}/CMakePresets.json |
Syntaxe akceptovaných prostředí
$env{HOME}
Pomocí syntaxe můžete odkazovat $HOME
při vytváření cest Linuxu v mapách dodavatele Microsoftu.