Sdílet prostřednictvím


CMakePresets.json a CMakeUserPresets.json mapy dodavatelů Microsoftu

CMake podporuje dva soubory a CMakePresets.json CMakeUserPresets.jsonumožň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, Linuxa 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 IntelliSense

useCompilerDefaults: 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 trueje .

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 falseje .
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-clnástroje . Výchozí hodnota falseje .
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 debugnapří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 truesada 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 trueje . 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 rsyncje .

copySourcesOptions.concurrentCopies: Počet souběžných kopií použitých při synchronizaci zdrojů do vzdáleného systému. Výchozí hodnota 5je .

copySourcesOptions.outputVerbosity: Úroveň podrobností operací kopírování zdroje do vzdáleného systému. Přijaté úrovně jsou Normal, Verbosea Diagnostic. Výchozí hodnota Normalje .
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 falseje . 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 RsyncAndSftpje .

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 falseje .

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 Settingspodporují 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.