Kurz: Instalace a používání balíčků pomocí CMake
V tomto kurzu se dozvíte, jak vytvořit program "Hello World" jazyka C++, který používá knihovnu fmt
s CMake a vcpkg. Nainstalujete závislosti, nakonfigurujete, sestavíte a spustíte jednoduchou aplikaci.
Poznámka
Pro uživatele Windows je požadovaným kompilátorem pro vývoj v jazyce C++ visual studio MSVC (Microsoft Visual C++Compiler).
Klonování úložiště
Prvním krokem je klonování úložiště vcpkg z GitHubu. Úložiště obsahuje skripty pro získání spustitelného souboru vcpkg a registru kurátorovaných opensourcových knihoven spravovaných komunitou vcpkg. Provedete to spuštěním tohoto příkazu:
git clone https://github.com/microsoft/vcpkg.git
Kurátorovaný registr vcpkg je sada více než 2 000 opensourcových knihoven. Tyto knihovny ověřily kanály kontinuální integrace vcpkg, aby spolupracovaly. I když úložiště vcpkg neobsahuje zdrojový kód pro tyto knihovny, obsahuje recepty a metadata pro sestavení a instalaci v systému.
Spuštění skriptu bootstrap
Teď, když jste naklonovali úložiště vcpkg, přejděte do
vcpkg
adresáře a spusťte spouštěcí skript:cd vcpkg && bootstrap-vcpkg.bat
cd vcpkg; .\bootstrap-vcpkg.bat
cd vcpkg && ./bootstrap-vcpkg.sh
Skript bootstrap provádí kontroly požadovaných součástí a stáhne spustitelný soubor vcpkg.
A je to! Vcpkg je nastavena a připravena k použití.
Nakonfigurujte proměnnou
VCPKG_ROOT
prostředí.export VCPKG_ROOT=/path/to/vcpkg export PATH=$VCPKG_ROOT:$PATH
Poznámka
Nastavení proměnných prostředí pomocí
export
příkazu ovlivní pouze aktuální relaci prostředí. Pokud chcete tuto změnu provést trvale napříč relacemi, přidejteexport
příkaz do skriptu profilu vašeho prostředí (např~/.bashrc
. ).~/.zshrc
set "VCPKG_ROOT=C:\path\to\vcpkg" set PATH=%VCPKG_ROOT%;%PATH%
Poznámka
Nastavení proměnných prostředí tímto způsobem ovlivní pouze aktuální relaci terminálu. Pokud chcete tyto změny provést trvale ve všech relacích, nastavte je na panelu Proměnných systému Windows.
$env:VCPKG_ROOT = "C:\path\to\vcpkg" $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
Poznámka
Nastavení proměnných prostředí tímto způsobem ovlivní pouze aktuální relaci terminálu. Pokud chcete tyto změny provést trvale ve všech relacích, nastavte je na panelu Proměnných systému Windows.
Nastavení
VCPKG_ROOT
říká vcpkg, kde se nachází vaše instance vcpkg. Přidáním zajistíte, žePATH
můžete spouštět příkazy vcpkg přímo z prostředí.Vytvořte adresář projektu.
mkdir helloworld && cd helloworld
Vytvořte soubor manifestu a přidejte závislost
fmt
.Nejprve v adresáři projektu vytvořte soubor manifestu (
vcpkg.json
) spuštěnímvcpkg new
příkazu zhelloworld
adresáře:vcpkg new --application
Dále přidejte
fmt
závislost:vcpkg add port fmt
Měl
vcpkg.json
by vypadat takto:{ "dependencies": [ "fmt" ] }
Toto je váš soubor manifestu. Vcpkg přečte soubor manifestu a zjistí, jaké závislosti se mají nainstalovat a integrovat s CMake, aby poskytoval závislosti vyžadované vaším projektem.
Výchozí
vcpkg-configuration.json
soubor zavádí omezení směrného plánu a určuje minimální verze závislostí, které má váš projekt použít. Při úpravě tohoto souboru je tento kurz nad rámec tohoto kurzu, hraje zásadní roli při definování omezení verzí pro závislosti projektu. Proto i když tento kurz není nezbytně nutný, je vhodné do správy zdrojového kódu přidatvcpkg-configuration.json
správu zdrojového kódu, abyste zajistili konzistenci verzí v různých vývojových prostředích.Vytvořte soubory projektu.
CMakeLists.txt
Vytvořte soubor s následujícím obsahem:cmake_minimum_required(VERSION 3.10) project(HelloWorld) find_package(fmt CONFIG REQUIRED) add_executable(HelloWorld helloworld.cpp) target_link_libraries(HelloWorld PRIVATE fmt::fmt)
Pojďme teď rozdělit jednotlivé řádky v
CMakeLists.txt
souboru:cmake_minimum_required(VERSION 3.10)
: Určuje, že minimální verze CMake potřebná k sestavení projektu je 3.10. Pokud je verze CMake nainstalovaná ve vašem systému nižší, vygeneruje se chyba.project(HelloWorld)
: Nastaví název projektu na "HelloWorld".find_package(fmt CONFIG REQUIRED)
: Vyhledá knihovnu pomocí konfiguračníhofmt
souboru CMake. KlíčovéREQUIRED
slovo zajistí, že se vygeneruje chyba, pokud se balíček nenajde.add_executable(HelloWorld helloworld.cpp)
: Přidá spustitelný cíl s názvem "HelloWorld", vytvořený ze zdrojového souboruhelloworld.cpp
.target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: Určuje, žeHelloWorld
spustitelný soubor by měl odkazovat na knihovnufmt
. KlíčovéPRIVATE
slovo označuje, žefmt
je potřeba pouze pro sestavováníHelloWorld
a nemělo by se šířit do jiných závislých projektů.
helloworld.cpp
Vytvořte soubor s následujícím obsahem:#include <fmt/core.h> int main() { fmt::print("Hello World!\n"); return 0; }
V tomto
helloworld.cpp
souboru je hlavička<fmt/core.h>
zahrnutá pro použitífmt
knihovny. Funkcemain()
pak zavoláfmt::print()
výstup zprávy "Hello World!" do konzoly.
Spuštění konfigurace CMake
CMake může automaticky propojit knihovny nainstalované nástrojem vcpkg, pokud
CMAKE_TOOLCHAIN_FILE
je nastavená tak, aby používala vlastní sadu nástrojů vcpkg. To může být dokončeno pomocí přednastavení CMake soubory.V adresáři
helloworld
vytvořte následující soubory:CMakePresets.json
{ "version": 2, "configurePresets": [ { "name": "vcpkg", "generator": "Ninja", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" } } ] }
CMakeUserPresets.json
{ "version": 2, "configurePresets": [ { "name": "default", "inherits": "vcpkg", "environment": { "VCPKG_ROOT": "<path to vcpkg>" } } ] }
Soubor
CMakePresets.json
obsahuje jednu předvolbu s názvem "vcpkg", která nastaví proměnnouCMAKE_TOOLCHAIN_FILE
. SouborCMakeUserPresets.json
nastaví proměnnouVCPKG_ROOT
prostředí tak, aby odkazovat na absolutní cestu obsahující vaši místní instalaci vcpkg. Doporučuje se nekontrolovatCMakeUserPresets.json
systémy správy verzí.Nakonec nakonfigurujte sestavení pomocí CMake:
cmake --preset=default
Sestavení projektu
Run (Spuštění):
cmake --build build
Spuštění aplikace
Nakonec spusťte spustitelný soubor, aby se vaše aplikace zobrazila v akci:
./build/HelloWorld Hello World!
.\build\HelloWorld.exe Hello World!
Zpětná vazba k produktu vcpkg
vcpkg je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: