Co je režim manifestu?
Vcpkg má dva režimy operací: klasický režim a režim manifestu. Pro většinu uživatelů doporučujeme režim manifestu.
Režim manifestu používá deklarativní soubory JSON k popisu metadat o projektu nebo balíčku. Soubory manifestu vcpkg.json
musí mít název.
Režim manifestu vcpkg install
je zapojen spuštěním příkazu, zatímco v pracovním adresáři je soubor manifestu (vcpkg.json
). Přečtěte si podrobnosti o tom, jak nainstalovat balíčky v režimu manifestu.
K používání pokročilých funkcí, jako je správa verzí a vlastní registry, se vyžaduje také režim manifestu.
Soubory manifestu na portech
Všechny porty vcpkg musí obsahovat vcpkg.json
soubor, který popisuje metadata o balíčku, který instalují.
Vcpkg používá metadata v manifestu balíčku pro různé účely, jako je výpočet stromů závislostí, vyhledávání balíčků podle názvu nebo popisu, překlad funkcí atd.
Příklad manifestu balíčku
{
"name": "fmt",
"version": "10.1.1",
"description": "Formatting library for C++. It can be used as a safe alternative to printf or as a fast alternative to IOStreams.",
"homepage": "https://github.com/fmtlib/fmt",
"license": "MIT",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}
Soubory manifestu v projektech
Hlavním účelem použití souboru manifestu v projektu je deklarovat závislosti. Při použití manifestu projektu můžete určit omezení verzí a přepsání zamknout konkrétní verze závislostí. Tato funkce není dostupná v klasickém režimu.
Příklad manifestu projektu
{
"dependencies": [ "fmt", "zlib" ],
"builtin-baseline": "3426db05b996481ca31e95fff3734cf23e0f51bc",
"overrides": [
{ "name": "zlib", "version": "1.2.8" }
]
}
Konfigurační soubor
Vcpkg lze nakonfigurovat prostřednictvím vcpkg-configuration.json
souboru pro přidání dalších registrů balíčků nebo překryvných portů a trojitých umístění.
Příklad konfiguračního souboru
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg-docs",
"reference": "vcpkg-registry",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"packages": [ "beicode", "beison" ]
}
],
"overlay-ports": [
"C:\\dev\\my_vcpkg_ports"
]
}
Instalace balíčků v režimu manifestu
K instalaci balíčků pomocí souboru manifestu vcpkg install
použijete příkaz bez argumentů balíčku.
Příkaz musí být proveden z adresáře obsahujícího soubor manifestu (vcpkg.json
) nebo cesty k souboru manifestu poskytnutému --x-manifest-root=<path>
pomocí této možnosti.
Balíčky nainstalované v režimu manifestu se nenainstalují v globálním installed
adresáři, jak to dělají v klasickém režimu. Místo toho každý manifest získá vlastní instalační adresář s názvem vcpkg_installed
; vcpkg_installed
adresář se vytvoří ve stejném adresáři, který obsahuje soubor manifestu.
Samostatné instalační stromy na manifest umožňují oddělení závislostí mezi různými projekty. Tím se obchází zásadní omezení klasického režimu, které umožňuje instalaci pouze jedné verze každého portu. Režim manifestu uchovává verze portů oddělených pro každý projekt.
Použití funkcí v manifestech projektu
Soubory manifestu mohou definovat doplňkové sady funkcí, chování a závislostí prostřednictvím použití "funkcí".
V projektech můžete definovat funkce pro povolení nebo zakázání závislostí, které se vztahují na části projektu. Pokud například projekt obsahuje více součástí, můžete chtít zachovat společné závislosti v "dependencies"
seznamu, ale některé jiné omezit na jejich příslušné součásti.
Pokud chcete povolit funkce projektu, můžete použít jednu z následujících metod:
--x-feature
Předejte možnost příkazuvpckg install
.- Na CMake nastavte
VCPKG_MANIFEST_FEATURES
před prvním volánímproject()
. - V nástroji MSBuild předejte
--x-feature
možnost prostřednictvím VcpkgAdditionalInstallOptions.
Příklad: Funkce v manifestech projektu
{
"name": "my-game",
"dependencies": [ "grpc" ],
"features": {
"client": {
"description": "client game executable",
"dependencies": [ "sdl2", "bullet3" ]
},
"server": {
"description": "multiplayer server executable",
"dependencies": [ "proxygen" ]
},
"tests": {
"description": "development tests",
"dependencies": [ "gtest" ]
}
}
}
Spuštění pouze závislostí komponenty klienta:
vcpkg install --x-feature=client
Další kroky
Tady je několik úkolů, které můžete vyzkoušet dál:
- Dokončení kurzu režimu manifestu
- Přečtěte si
vcpkg.json
vcpkg-configuration.json
referenční články. - Uzamčení verzí pro opakovatelné buildy pomocí správy verzí