Konfigurace a sestavení pomocí předvoleb CMake v sadě Visual Studio
CMake podporuje dva soubory, které uživatelům umožňují určit společné možnosti konfigurace, sestavení a testování a sdílet je s ostatními: CMakePresets.json
a CMakeUserPresets.json
. Pomocí těchto souborů můžete řídit CMake v sadě Visual Studio a Visual Studio Code, v kanálu kontinuální integrace (CI) a z příkazového řádku.
CMakePresets.json
slouží k ukládání buildů pro celý projekt. CMakeUserPresets.json
je určená pro vývojáře, aby si uložili vlastní místní buildy. Oba soubory jsou podporované v sadě Visual Studio 2019 verze 16.10 nebo novější.
Tento článek obsahuje informace o CMakePresets.json
integraci se sadou Visual Studio. Tady jsou užitečné odkazy:
- Další informace o formátu
CMakePresets.json
naleznete v oficiální dokumentaci CMake. - Další informace o mapách a rozšíření
CMakePresets.json
maker od microsoftu najdete v mapách dodavatelů aCMakeUserPresets.json
mapách od microsoftu. - Další informace o použití
CMakePresets.json
v editoru Visual Studio Code naleznete v tématu Konfigurace a sestavení pomocí předvoleb CMake.
Jako CMakePresets.json
alternativu CMakeSettings.json
k . Visual Studio nikdy nečte z obou CMakePresets.json
a CMakeSettings.json
současně. Pokud chcete povolit nebo zakázat CMakePresets.json
integraci v sadě Visual Studio, přečtěte si téma Povolení CMakePresets.json
v sadě Visual Studio 2019.
Podporované CMake a CMakePresets.json
verze
Podporované CMakePresets.json
verze a CMakeUserPresets.json
verze schématu závisí na vaší verzi sady Visual Studio:
- Visual Studio 2019 verze 16.10 a novější podporuje schéma verze 2 a 3.
- Visual Studio 2022 verze 17.4 Preview 1 přidává podporu schématu verze 4.
- Visual Studio 2022 verze 17.5 Preview 1 přidává podporu schématu verze 5.
Verzi můžete aktualizovat změnou "version"
pole v kořenovém objektu. Příklad a další informace najdete CMakePresets.json
ve formátu.
CMake verze 3.20 nebo novější se vyžaduje, když voláte CMake z CMakePresets.json
příkazového řádku. Visual Studio ale čte a vyhodnocuje CMakePresets.json
a CMakeUserPresets.json
sama sebe a nevyvolává CMake přímo s --preset
možností. Proto CMake verze 3.20 nebo novější není při sestavování v CMakePresets.json
sadě Visual Studio striktně nutná.
Doporučujeme používat aspoň CMake verze 3.14 nebo novější.
Povolení CMakePresets.json
integrace v sadě Visual Studio
CMakePresets.json
Integrace není ve výchozím nastavení v sadě Visual Studio povolená. Můžete ho povolit v >nástrojích Možnosti>CMake>Obecné:
Tato obrazovka se dostanete z nabídky sady Visual Studio 2022: Nástroje > Možnosti > CMake > Obecné. Tato možnost je v části Konfigurace souboru CMake.
Důležité
Zavřete a znovu otevřete složku v sadě Visual Studio a aktivujte integraci.
V některých starších verzích sady Visual Studio nabízí nástroje>CMake>>Obecné jenom jednu možnost pro povolení CMakePresets.json
integrace:
Následující tabulka uvádí, kdy CMakePresets.json
se používá místo CMakeSettings.json
použití konfigurace CMake a sestavení v sadě Visual Studio 2022 a Visual Studio 2019 verze 16.10 a novější. Pokud neexistuje žádný konfigurační soubor, použijí se výchozí předvolby konfigurace.
V tabulce "Možnosti nástrojů>povoleno" znamená použití CMakePresets.json k řízení konfigurace, sestavení a testování CMake je vybrán v> nástrojích Možnosti>CMake>Obecné.
Konfigurační soubory | Možnosti nástrojů > zakázány | Možnosti nástrojů > povoleny |
---|---|---|
Neexistuje žádný konfigurační soubor. | CMakeSettings.json |
CMakePresets.json |
CMakeSettings.json přítomný |
CMakeSettings.json |
CMakePresets.json |
CMakePresets.json přítomný |
CMakePresets.json |
CMakePresets.json |
Oba konfigurační soubory jsou k dispozici. | CMakePresets.json |
CMakePresets.json |
Úprava automatické konfigurace a oznámení mezipaměti
Visual Studio ve výchozím nastavení automaticky vyvolá configure
pokaždé, když aktivní cílový systém nebo nakonfiguruje přednastavené změny. Toto chování můžete upravit tak, že v> nástrojích CMake>>Obecné vyberete možnost Nikdy spustit krok konfigurace automaticky. Všechna oznámení mezipaměti CMake (zlaté pruhy) můžete také zakázat zrušením zaškrtnutí políčka Zobrazit oznámení mezipaměti CMake.
Výchozí konfigurace předvoleb
Pokud žádný CMakePresets.json
nebo CMakeUserPresets.json
soubor neexistuje nebo CMakePresets.json
CMakeUserPresets.json
je neplatný, sada Visual Studio se vrátí do následujících výchozích předvoleb konfigurace:
Příklad pro Windows
{
"name": "windows-default",
"displayName": "Windows x64 Debug",
"description": "Sets Ninja generator, compilers, x64 architecture, build and install directory, debug build type",
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [ "Windows" ]
}
}
},
Příklad pro Linux
{
"name": "linux-default",
"displayName": "Linux Debug",
"description": "Sets Ninja generator, compilers, build and install directory, debug build type",
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [ "Linux" ]
},
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
}
}
}
Pokud se pokusíte otevřít nebo upravit CMakePresets.json
soubor, který neexistuje, Visual Studio automaticky vytvoří CMakePresets.json
soubor s výchozím nastavením Konfigurovat přednastavení v kořenovém adresáři projektu.
Konfigurace a sestavení
Na panelu nástrojů sady Visual Studio jsou rozevírací seznamy pro cílové systémy, konfigurovat předvolby a předvolby sestavení, pokud CMakePresets.json
je povolená integrace:
Výběr cílového systému
Rozevírací seznam na levé straně označuje aktivní cílový systém. Je to systém, na kterém je CMake vyvolán ke konfiguraci a sestavení projektu. Tento rozevírací seznam obsahuje místní počítač, všechna připojení SSH v Správce připojení podle názvu hostitele a všechny instalace Subsystém Windows pro Linux (WSL), které sada Visual Studio najde:
Rozevírací seznam obsahuje několik položek včetně místního počítače, IP adresy 192.168.0.5, WSL: ubuntu2004, WSL: debian a Manage Connections.
V předchozím příkladu:
- 192.168.0.5 je vzdálený linuxový systém, který byl přidán do Správce připojení.
- Ubuntu2004 a debian jsou instalace WSL.
Výběrem možnosti Spravovat připojení otevřete Správce připojení.
Výběr přednastavení konfigurace
Rozevírací seznam uprostřed označuje aktivní předvolbu konfigurace. Je to configurePreset
hodnota, která se používá při vyvolání CMake k vygenerování systému sestavení projektu. Tento rozevírací seznam obsahuje sjednocení neskrytá konfigurace přednastavení definovaných v CMakePresets.json
a CMakeUserPresets.json
.
Visual Studio používá hodnotu hostOS
v mapě dodavatele nastavení sady Microsoft Visual Studio ke skrytí předvoleb konfigurace, které se nevztahují na aktivní cílový systém. Další informace najdete v položce hostOS
tabulky v mapě dodavatele nastavení sady Visual Studio.
Výběrem možnosti Spravovat konfigurace otevřete CMakePresets.json
soubor umístěný v kořenovém adresáři projektu. CMakePresets.json
je vytvořen, pokud ještě neexistuje.
Výběr přednastavení sestavení
Rozevírací seznam vpravo označuje aktivní předvolbu sestavení. Je to buildPreset
hodnota, která se používá při vyvolání CMake k sestavení projektu. Tento rozevírací seznam obsahuje sjednocení neskrytých předvoleb sestavení definovaných v CMakePresets.json
a CMakeUserPresets.json
.
K určení přidružené configurePreset
hodnoty jsou vyžadovány všechny předvolby sestavení. Visual Studio skryje předvolby sestavení, které se nevztahují na aktivní předvolbu konfigurace. Další informace najdete v seznamu předvoleb sestavení.
Pokud nejsou k aktivní konfiguraci přednastavení přidruženy žádné přednastavení sestavení, sada Visual Studio zobrazí výchozí předvolbu sestavení. Výchozí předvolba sestavení je ekvivalentní předávání cmake --build
bez dalších argumentů z příkazového řádku.
Konfigurovat
Visual Studio se automaticky pokusí nakonfigurovat projekt, když zjistí, že mezipaměť CMake je za aktuální. Pokud chcete konfiguraci vyvolat ručně, vyberte v hlavní nabídce možnost Project>Configure project-name (Konfigurovat <název> projektu). Je to stejné jako spuštění cmake --preset <configurePreset>
z příkazového řádku, kde <configurePreset>
je název aktivní konfigurace přednastavení.
Pokud chcete zakázat automatické generování mezipaměti, přečtěte si téma Automatická konfigurace a oznámení mezipaměti.
Sestavení
Chcete-li sestavit celý projekt, vyberte v hlavní nabídce možnost Sestavit>vše. Je to stejné jako spuštění cmake --build --preset <buildPreset>
z příkazového řádku, kde <buildPreset>
je název aktivní předvolby sestavení.
Pokud chcete vytvořit jeden cíl, přepněte do zobrazení cílů CMake v Průzkumník řešení. Potom klikněte pravým tlačítkem na libovolný cíl a v místní nabídce vyberte Vytvořit .
Poznámka:
Visual Studio 2019 nepodporuje buildPresets.targets
možnost vytvořit podmnožinu cílů zadaných v CMakePresets.json
sadě .
Spuštění CTestu
CMakePresets.json
podporuje dvě možnosti nabídky v sadě Visual Studio 2019:
- Testovací>spuštění CTests pro <název> projektu vyvolá CTest a spustí všechny testy přidružené k aktivní předvolbě konfigurace a přednastavení sestavení bez dalších argumentů předaných CTest.
- >Předvolba testu testu pro <konfiguraciPreset> se rozbalí, aby se zobrazily všechny přednastavení testů přidružené k aktivní předvolbě konfigurace. Výběr jedné předvolby testu je stejný jako spuštění
ctest --preset <testPreset>
z příkazového řádku, kde<testPreset>
je název vybrané předvolby testu. Tato možnost není k dispozici, pokud nejsou pro aktivní předvolbu konfigurace definovány žádné přednastavení testů.
V sadě Visual Studio 2019 není Průzkumník testů integrovaný s CMakePresets.json
.
Přidání nových předvoleb
V sadě Visual Studio 2019 se změní CMakePresets.json
všechny příkazy a přednastavené šablony . Nové předvolby na úrovni uživatele můžete přidat přímo úpravou CMakeUserPresets.json
.
/
Pro cesty v CMakePresets.json
a CMakeUserPresets.json
.
Přidání nových přednastavení konfigurace
Chcete-li přidat novou předvolbu CMakePresets.json
konfigurace pro , z Průzkumník řešení, klikněte pravým tlačítkem na CMakePresets.json
zobrazení složky a v místní nabídce vyberte Přidat konfiguraci. Zobrazí se dialogové okno pro výběr šablony Konfigurovat přednastavení:
Vyberte šablonu ladění systému Windows x64 a nakonfigurujte ji v systémech Windows. Vyberte šablonu ladění Linuxu a nakonfigurujte ji ve vzdálených systémech Linux. Další informace o úpravách CMakePresets.json
naleznete v tématu Úpravy předvoleb.
Vybraná šablona se přidá, CMakePresets.json
pokud existuje. V opačném případě se šablona zkopíruje do nového CMakePresets.json
souboru.
Přidání nových předvoleb sestavení a předvoleb testů
Visual Studio 2019 nenabízí šablony pro nové předvolby sestavení a předvolby testů. Předvolby sestavení a předvolby testů můžete přidat přímo úpravou CMakePresets.json
. Další informace najdete v seznamu přednastavení sestavení, seznamu předvoleb testů nebo ukázkového CMakePresets.json
souboru.
Úprava přednastavení
Oficiální dokumentace CMake je nejlepším prostředkem pro úpravy konfigurací předvoleb, předvoleb sestavení a testovacích předvoleb. Následující informace jsou podmnožinou dokumentace CMake, která je zvláště relevantní pro vývojáře sady Visual Studio.
Výběr kompilátorů
Kompilátory jazyka C a C++ můžete nastavit pomocí cacheVariables.CMAKE_C_COMPILER
cacheVariables.CMAKE_CXX_COMPILER
a v předvolbě konfigurace. Je ekvivalentem předávání -D CMAKE_C_COMPILER=<value>
a -D CMAKE_CXX_COMPILER=<value>
CMake z příkazového řádku. Další informace najdete na webu CMAKE_<LANG>_COMPILER
.
Následující příklady použijte k sestavení pomocí cl.exe
sady Visual Studio a clang-cl.exe
ze sady Visual Studio. Nástroje Clang jazyka C++ pro součásti systému Windows musí být nainstalovány, aby bylo možné sestavovat pomocí clang-cl
.
Sestavení s:cl.exe
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl"
},
Sestavení s:clang
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
}
Pokud použijete buď nebo Visual Studio 16 2019
Visual Studio 17 2022
jako generátor, můžete sadu nástrojů zadat ClangCL
pomocí toolset
přednastavení konfigurace:
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
},
"toolset": "ClangCL",
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
}
Další informace o generátorech, které podporují toolset
specifikaci, najdete CMAKE_GENERATOR_TOOLSET
v dokumentaci k CMake.
Důležité
V sadě Visual Studio 2019 musíte explicitně zadat režim Clang IntelliSense při sestavování pomocí clang
nebo clang-cl
.
Pokud chcete tyto buildy reprodukovat mimo Visual Studio, přečtěte si téma Spuštění CMake z příkazového řádku nebo kanálu CI.
Pokud chcete sestavovat v Linuxu nebo bez sady nástrojů Visual C++, zadejte název kompilátoru ve vaší PATH
instanci nebo proměnnou prostředí, která se vyhodnotí jako úplná cesta kompilátoru. Úplné cesty se nedoporučuje, aby soubor zůstal sdíletelný. Přednastavení sestavení s GCC verze 8 může vypadat takto:
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "gcc-8",
"CMAKE_CXX_COMPILER": "g++-8"
},
Kompilátory můžete také nastavit pomocí souboru sady nástrojů CMake. Soubory toolchain lze nastavit pomocí cacheVariables.CMAKE_TOOLCHAIN_FILE
, což je ekvivalent pro předávání -D CMAKE_TOOLCHAIN_FILE=<value>
CMake z příkazového řádku. Soubor sady nástrojů CMake se nejčastěji používá pro křížovou kompilaci. Další informace o vytváření souborů toolchain CMake naleznete v sadě nástrojů CMake.
Výběr generátoru
Předdefinované šablony konfigurace Windows i Linuxu určují jako výchozí generátor Ninja. Další běžné generátory jsou generátory sady Visual Studio v systémech Windows a Unix Makefile v systémech Linux a macOS. Nový generátor můžete zadat pomocí generator
možnosti Konfigurovat předvolbu. Odpovídá předání -G
CMake z příkazového řádku.
Nastavte a toolset.strategy
nastavte architecture.strategy
set
při vytváření pomocí nástroje Visual Studio Generator. Další informace najdete v tématu Generátory CMake.
Vyberte typ konfigurace.
Typ konfigurace (Debug
neboRelease
) pro generátory konfigurace můžete nastavit pomocí .cacheVariables.CMAKE_BUILD_TYPE
Odpovídá předání -D CMAKE_BUILD_TYPE=<value>
CMake z příkazového řádku. Další informace najdete na webu CMAKE_BUILD_TYPE
.
Výběr cílové architektury a architektury hostitele při sestavování pomocí sady nástrojů Visual C++
Cílovou architekturu (x64, Win32, ARM64 nebo ARM) můžete nastavit pomocí .architecture.value
Odpovídá předání -A
CMake z příkazového řádku. Další informace naleznete v tématu Výběr platformy.
Poznámka:
Generátory sady Visual Studio v současné době očekávají syntaxi Win32 a generátory příkazového řádku (například Ninja) při sestavování pro x86 syntaxi x86.
Architekturu hostitele (x64 nebo x86) a sadu nástrojů můžete nastavit pomocí .toolset.value
Odpovídá předání -T
CMake z příkazového řádku. Další informace naleznete v tématu Výběr sady nástrojů.
Hodnoty architecture.strategy
a toolset.strategy
říkají CMake, jak zpracovat pole architektury a sady nástrojů. set
znamená, že CMake nastaví příslušnou hodnotu a external
znamená, že CMake nenastaví příslušnou hodnotu.
Doporučujeme používat set
s generátory ide, jako je Generátor sady Visual Studio. Používejte external
s generátory příkazového řádku, jako je Ninja. Tyto hodnoty umožňují dodavatelům, jako je Visual Studio, poskytnout požadované prostředí před vyvolání CMake. Další informace o polích architektury a sady nástrojů najdete v seznamu konfigurovat přednastavení.
Pokud nechcete vytvořit zdroj prostředí, můžete ho external
nastavit architecture.strategy
a architecture.value
nastavit na unspecified
hodnotu . Z některého z těchto důvodů se může stát, že není vhodné vytvořit prostředí:
- Používáte jinou sadu nástrojů než MSVC.
- Používáte vlastní sadu nástrojů, například ve vložených scénářích.
- K sestavení nepotřebujete konkrétní prostředí.
Úplný seznam generátorů IDE, které podporují pole architektury, najdete v tématu CMAKE_GENERATOR_PLATFORM
. Úplný seznam generátorů IDE, které podporují pole sady nástrojů, najdete v tématu CMAKE_GENERATOR_TOOLSET
.
Pomocí následujících příkladů můžete cílit na ARM64 s generátorem Ninja nebo cílit na Win32 (x86) pomocí generátoru sady Visual Studio 16 2019:
"generator": "Ninja",
"architecture": {
"strategy": "external",
"value": "arm64"
},
"generator": "Visual Studio 16 2019",
"architecture": {
"strategy": "set",
"value": "Win32"
},
Nastavení a referenční proměnné prostředí
Proměnné prostředí můžete nastavit pomocí mapy prostředí. Proměnné prostředí se dědí prostřednictvím inherits
pole, ale můžete je přepsat podle potřeby.
Přednastavené prostředí je sjednocením vlastního prostředí a prostředí ze všech nadřazených prostředí. Pokud více inherits
předvoleb poskytuje konfliktní hodnoty pro stejnou proměnnou, je upřednostňovaná předchozí předvolba v inherits
seznamu. Proměnnou zděděnou z jiné předvolby můžete zrušit tak, že ji nastavíte na null
hodnotu .
Proměnné prostředí nastavené v předvolbě konfigurace také automaticky procházejí přidruženými předvolbami sestavení a předvolbami testů, pokud inheritConfigureEnvironment
není nastavena na false
hodnotu . Další informace najdete v seznamu konfigurace předvoleb.
Proměnné prostředí můžete odkazovat pomocí $env{<variable-name>}
syntaxe a $penv{<variable-name>}
syntaxe. Další informace naleznete v tématu Rozšíření makra.
Konfigurace IntelliSense pro křížový kompilátor
Visual Studio ve výchozím nastavení používá režim IntelliSense, který odpovídá zadané sadě nástrojů a cílové architektuře. Pokud křížově kompilujete, budete možná muset ručně zadat správný režim IntelliSense pomocí intelliSenseMode
možnosti na mapě dodavatele nastavení sady Visual Studio. Další informace najdete v položce intelliSenseMode
tabulky v mapě dodavatele nastavení sady Visual Studio.
Konfigurace a sestavení ve vzdáleném systému nebo Subsystém Windows pro Linux
Díky CMakePresets.json
podpoře v sadě Visual Studio můžete snadno nakonfigurovat a sestavit projekt ve Windows, WSL a vzdálených systémech. Postup konfigurace a sestavení projektu ve Windows, vzdáleném systému nebo WSL jsou stejné. Několik chování je však specifické pro vzdálený vývoj.
${sourceDir}
chování ve scénářích vzdáleného kopírování
V místních scénářích (včetně WSL1) ${sourceDir}
se vyhodnotí cesta ke zdrojovému adresáři projektu, který je otevřený v sadě Visual Studio. Ve scénářích ${sourceDir}
vzdáleného kopírování se vyhodnotí cesta ke zdrojovému adresáři projektu v cílovém systému, a ne ke zdrojovému adresáři projektu na místním počítači.
Hodnota v mapě dodavatele vzdáleného sourceDir
nastavení sady Visual Studio určuje zdrojový adresář projektu v cílovém systému (výchozí hodnota $env{HOME}/.vs/$ms{projectDirName}
). Další informace najdete v položce sourceDir
tabulky v mapě dodavatele nastavení sady Visual Studio.
Místní složka pro vzdálený výstup
Scénáře vzdáleného kopírování vyžadují, aby místní adresář zkopíroval některé vzdálené soubory, jako jsou soubory odpovědí rozhraní CMake File API nebo soubory sestavení, pokud copyBuildOutput
je v mapě dodavatele vzdáleného nastavení sady Visual Studio nastavena na true
. Tyto soubory se automaticky zkopírují do <local-source-directory>/out/<remote-connection-ID>/build/${presetName}
.
Vyvolání stejné předvolby konfigurace ve Windows a WSL1
Pokud se pokusíte použít stejnou předvolbu konfigurace ve Windows a WSL1, zobrazí se chyba. Windows i WSL1 používají systém souborů Windows, takže CMake se pokusí použít stejný výstupní adresář (binaryDir
) pro stromy sestavení Windows i WSL1.
Pokud chcete použít stejnou předvolbu konfigurace s Windows i sadou nástrojů WSL1, vytvořte druhou předvolbu konfigurace, která dědí z původní předvolby a určuje novou binaryDir
hodnotu. V následujícím příkladu windows-preset
lze použít ve Windows a base-preset
lze ho použít ve WSL1:
{
"name": "windows-preset",
"inherits": "base-preset",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": "Windows"
}
}
}
Poznámka:
V sadě Visual Studio 2019 se podporuje pouze sada nástrojů WSL1. Toto chování se zobrazí při každém vyvolání configure
windows i WSL.
Povolení integrace vcpkg
Vcpkg pomáhá spravovat knihovny C a C++ ve Windows, Linuxu a macOS. Aby bylo možné povolit integraci vcpkg, musí být do CMake předán soubor vcpkg toolchain (vcpkg.cmake
). Další informace najdete v dokumentaci k vcpkg.
Visual Studio už při povolení integrace nepředá soubor vcpkg toolchain do CMake automaticky CMakePresets.json
. Tato změna eliminuje chování specifické pro Visual Studio a zajišťuje, že sestavení můžete reprodukovat z příkazového řádku.
Místo toho nastavte cestu vcpkg.cmake
pomocí VCPKG_ROOT
proměnné prostředí v CMakePresets.json
:
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": {
"value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"type": "FILEPATH"
}
},
VCPKG_ROOT
měla by být nastavena na kořen vaší instalace vcpkg. Další informace najdete v tématu proměnné prostředí vcpkg.
Pokud už používáte soubor sady nástrojů CMake a chcete povolit integraci vcpkg, přečtěte si téma Použití více souborů sady nástrojů. Podle těchto pokynů použijte externí soubor sady nástrojů s projektem pomocí nástroje vcpkg.
Nahrazení proměnných v launch.vs.json
a tasks.vs.json
CMakePresets.json
podporuje nahrazení proměnných v launch.vs.json
a tasks.vs.json
. Tady je několik aspektů:
Proměnné prostředí nastavené v aktivní předvolbě konfigurace se automaticky protékají do
launch.vs.json
atasks.vs.json
konfigurací. Jednotlivé proměnnélaunch.vs.json
prostředí můžete zrušit taktasks.vs.json
, že je nastavíte nanull
hodnotu . Následující příklad nastaví proměnnouDEBUG_LOGGING_LEVEL
nanull
hodnotu inlaunch.vs.json
:"env": { "DEBUG_LOGGING_LEVEL": null }
.Hodnoty klíče nastavené v aktivní předvolbě konfigurace jsou k dispozici pro spotřebu
launch.vs.json
v syntaxi atasks.vs.json
syntaxi${cmake.<KEY-NAME>}
. Slouží${cmake.binaryDir}
například k odkazování na výstupní adresář aktivní konfigurace přednastavení.Jednotlivé proměnné prostředí nastavené v mapě prostředí aktivní předvolby konfigurace jsou k dispozici pro spotřebu v
launch.vs.json
syntaxi atasks.vs.json
prostřednictvím syntaxe${env.<VARIABLE-NAME>}
.
Místo syntaxe aktualizujte své launch.vs.json
soubory tak task.vs.json
, aby odkazy CMakePresets.json
na syntaxi CMakeSettings.json
. Makra, která odkazují na starou CMakeSettings.json
syntaxi, pokud CMakePresets.json
se jedná o aktivní konfigurační soubor, se zastarávají pro vyřazení v budoucí verzi. Například odkazovat na výstupní adresář aktivní Konfigurace přednastavení namísto ${cmake.binaryDir}
${cmake.buildRoot}
, protože CMakePresets.json
používá binaryDir
syntaxi.
Odstraňování potíží
Pokud věci nefungují podle očekávání, můžete vyzkoušet několik kroků pro řešení potíží.
Pokud je některý CMakePresets.json
nebo CMakeUserPresets.json
neplatný, Sada Visual Studio se vrátí k výchozímu chování a zobrazí pouze výchozí přednastavení konfigurace. Visual Studio IntelliSense vám může pomoct zachytit mnoho z těchto chyb JSON, ale nebude vědět, jestli odkazujete na předvolbu s inherits
nesprávným názvem nebo configurePreset
s nesprávným názvem.
Pokud chcete zkontrolovat, jestli jsou přednastavené soubory platné, spusťte cmake --list-presets
z příkazového řádku v kořenovém adresáři projektu. (Vyžaduje se CMake 3.20 nebo novější.) Pokud některý soubor není platný, zobrazí se následující chyba:
CMake Error: Could not read presets from
C:/Users/<user>/source/repos/<project-name>: JSON parse error
Mezi další kroky pro řešení potíží patří:
- Odstraňte mezipaměť a překonfigurujte projekt (CMake: Odstranit mezipaměť a projekt>konfigurovat <název> projektu).
- Zavřete a znovu otevřete složku v sadě Visual Studio (Zavřít složku souboru>).
.vs
Odstraňte složku v kořenovém adresáři projektu.
Pokud jste problém identifikovali, nejlepším způsobem, jak ho nahlásit, je vybrat tlačítko Odeslat názor v pravém horním rohu sady Visual Studio.
Povolení protokolování pro vzdálená připojení
Protokolování vzdálených připojení můžete povolit, pokud máte potíže s připojením nebo kopírováním souborů do vzdáleného systému. Další informace naleznete v tématu Protokolování pro vzdálená připojení.
Povolení AddressSanitizeru pro Windows a Linux
Visual Studio podporuje AddressSanitizer (ASAN), detektor chyb paměti modulu runtime C a C++ pro vývoj pro Windows i Linux. Možnost addressSanitizerEnabled
v CMakeSettings.json
enables AddressSanitizer. CMakePresets.json
nepodporuje toto chování.
Místo toho povolte a zakažte AddressSanitizer nastavením požadovaného kompilátoru a příznaku linkeru sami. Nastavením odeberete chování specifické pro Visual Studio a zajistíte, aby stejný CMakePresets.json
soubor mohl reprodukovat sestavení z příkazového řádku.
Přidáním následující ukázky CMakeLists.txt
můžete povolit nebo zakázat AddressSanitizer pro cíl:
option(ASAN_ENABLED "Build this target with AddressSanitizer" ON)
if(ASAN_ENABLED)
if(MSVC)
target_compile_options(<target> PUBLIC /fsanitize=address)
else()
target_compile_options(<target> PUBLIC -fsanitize=address <additional-options>)
target_link_options(<target> PUBLIC -fsanitize=address)
endif()
endif()
Tato <additional-options>
část uvádí další příznaky kompilace, například "-fno-omit-frame-pointer"
. Další informace o AddressSanitizer pro Linux naleznete v tématu Použití AddressSanitizer. Další informace o použití AddressSanitizer s MSVC naleznete v tématu Použití AddressSanitizer z příkazového řádku vývojáře.
Předat příznaky modulu runtime AddressSanitizer pomocí ASAN_OPTIONS
pole v launch.vs.json
. ASAN_OPTIONS
Pokud nejsou zadány detect_leaks=0
žádné další možnosti modulu runtime, protože v sadě Visual Studio není podporována funkce LeakSanitizer.
Spuštění CMake z příkazového řádku nebo kanálu CI
Stejné soubory a CMakeUserPresets.json
soubory můžete použít CMakePresets.json
k vyvolání CMake v sadě Visual Studio a z příkazového řádku. Dokumentace CMake a CTest jsou nejlepšími prostředky pro vyvolání CMake a CTest s --preset
. Vyžaduje se CMake verze 3.20 nebo novější.
Sourcing prostředí při sestavování pomocí generátorů příkazového řádku ve Windows
Než se CMake vyvolá při sestavování pomocí generátoru příkazového řádku, je na uživateli, aby nakonfiguroval prostředí. Pokud vytváříte sadu nástrojů Ninja a Visual C++ ve Windows, nastavte prostředí před zavolání CMake, aby se vygeneroval systém sestavení. Můžete to udělat voláním vcvarsall.bat
argumentu architecture
. Argument architecture
určuje hostitelskou a cílovou architekturu, která se má použít. Další informace najdete v vcvarsall
syntaxi. Pokud vytváříte Linux nebo Windows pomocí nástroje Visual Studio Generator, nemusíte tento krok provádět.
Je to stejný krok, který sada Visual Studio vezme za vás, když integrované vývojové prostředí vyvolá CMake. Visual Studio parsuje aktivní předvolbu konfigurace pro architekturu hostitele a cíle určenou parametrem toolset
a architecture
. Visual Studio pak z zdroje zadaného prostředí .vcvarsall.bat
Při sestavování z příkazového řádku Windows s Ninja budete muset tento krok provést sami.
vcvarsall.bat
se instaluje s nástroji Build Tools for Visual Studio. Ve výchozím nastavení vcvarsall.bat
je nainstalován v C:\Program Files (x86)\Microsoft Visual Studio\2019\<edition>\VC\Auxiliary\Build
. Pokud často používáte pracovní postup příkazového řádku, můžete ho přidat vcvarsall.bat
PATH
.
Příklad pracovního postupu příkazového řádku
Následující příkazy můžete použít ke konfiguraci a sestavení projektu CMake, který používá Ninja k cílení ARM64 s nástroji pro sestavení x64. Vyžaduje se CMake verze 3.20 nebo novější. Spusťte tyto příkazy z adresáře, ve kterém CMakePresets.json
se soubor nachází:
/path/to/vcvarsall.bat x64_arm64
cmake --list-presets=all .
cmake --preset <configurePreset-name>
cmake --build --preset <buildPreset-name>
Ukázkový CMakePresets.json
soubor
Soubor CMakePresets.json
v box2d-lite obsahuje příklady konfigurace přednastavení, přednastavení sestavení a testovací přednastavení. Další informace o tomto příkladu najdete v prezentaci Úvod k CMakePresets.json. V projektu DirectXTK můžete vidět další příklad, který ukazuje mnoho cílů sestavení v jeho configurePresets
části.
Další kroky
Další informace o konfiguraci a ladění projektů CMake v sadě Visual Studio: