Číst v angličtině

Sdílet prostřednictvím


Přehled vcpkg

vcpkg je bezplatný opensourcový správce balíčků C/C++, který spravuje microsoft a komunita C++, která běží ve Windows, macOS a Linuxu. Je to nástroj C++ v srdci a je napsaný pomocí skriptů C++ a CMake. Je navržená tak, aby řešila jedinečné body bolesti při správě knihoven C/C++.

Proč vcpkg?

  • Více než 2300 opensourcovýchknihovenchm knihovnám si můžete vybrat z více než 2300 opensourcových knihoven .
  • Vytvoření vlastního registru knihovny s vlastními balíčky knihoven
  • Konzistentní prostředí pro různé platformy pro Windows, macOS a Linux
  • Snadné přidávání knihoven do projektu pomocí libovolného systému sestavení a projektu
  • Vytváření závislostí ze zdroje nebo stahování předem připravených binárních souborů ověřených pomocí ABI s více než 70 konfiguracemi dostupnými ve výchozím nastavení a nekonečným přizpůsobením pro vaše konkrétní požadavky
  • Zabránění konfliktům verzí a problémům s kosočtvercem mezi závislostmi s jedinečným návrhem verzí
  • Pro uživatele MSBuild a CMake: automatická integrace s prostředím sestavení pro bezproblémové získávání závislostí
  • Důvěřují studentům, opensourcovým vývojářům, koníčkům a kladům, včetně některých největších podniků.

Funkce vcpkg

Porty a trojité tečky

Port vcpkg je verze sestavení recept, který vytváří balíček. Nejběžnějším typem balíčku je knihovna C/C++, která se skládá ze hlaviček, zdrojového kódu a binárních souborů.

Triplet zachytí cílové prostředí sestavení (procesor, operační systém, kompilátor, modul runtime atd.) do jednoho vhodného názvu. Vcpkg ve výchozím nastavení poskytuje více než 70 tripletů, ale můžete také definovat vlastní.

Pokud chcete do systému nainstalovat balíček, spustí vcpkg soubor receptu portu, což je skript CMake. Skript může obsahovat kroky ke stažení zdrojového kódu nebo spuštění sestavení ve vašem systému. Během sestavení používá vcpkg informace ve vašem trojitém počítači, aby se zajistilo, že vytvořený balíček odpovídá požadované konfiguraci.

Binární ukládání do mezipaměti

I když vcpkg vytváří knihovny ze zdroje, kdykoli je to potřeba, můžete zálohovat integrované balíčky v binární mezipaměti. To umožňuje ostatním počítačům vývojářů nebo spuštěním kontinuální integrace odkazovat na tyto předem připravené balíčky bez nutnosti pokaždé spustit nové sestavení. vcpkg určuje, jestli je nutné znovu sestavit, a to tak, že zkontroluje, jestli mezipaměť již obsahuje platný existující balíček s příslušnými binárními soubory.

Manifesty

V souboru manifestu můžete deklarovat přímé závislosti a přidat volitelné funkce nebo omezení verzí. Soubory manifestu můžete zkontrolovat do systému správy zdrojového kódu a sdílet je s týmem.

Vytváření verzí

Vcpkg má jedinečný způsob zpracování verzí balíčků. Soubor manifestu může ve výchozím nastavení odkazovat na jednu základní verzi. Standardní hodnoty poskytují bezproblémovou správu závislostí bez konfliktů s plnou reprodukovatelností. Kromě toho můžete mít stále pokročilejší kontrolu tím, že připnete jednotlivé verze balíčků.

Registry

Registr je kolekce portů a dostupných verzí, které může uživatel vcpkg nainstalovat. vcpkg ve výchozím nastavení poskytuje kurátorovaný registr opensourcových knihoven. Můžete také vytvořit vlastní registry pro přizpůsobení, opravy nebo soukromé knihovny.

Ukládání prostředků do mezipaměti

Ukládání prostředků do mezipaměti umožňuje vcpkg pracovat v prostředích se vzduchem a offline a zajistit kontinuitu podnikání i v případě výpadku vzdáleného hostitele nebo ohrožení zabezpečení. Používá zrcadla pro stahování k nahrání a obnovení prostředků, jako je zdrojový kód a nástroje sestavení.

vcpkg ve srovnání s jinými správci balíčků

vcpkg ve srovnání s NuGetem

NuGet je správce balíčků .NET, který se často používá pro vývoj jazyka C/C++, zejména pro řešení MSBuild, která obsahují projekty .NET. Obecně platí, že tým Microsoft C++ nedoporučuje používat NuGet pro vývoj jazyka C/C++, protože NuGet má několik omezení:

  • Kompilační příchutě. Vzhledem k tomu, že NuGet nemůže za běhu sestavit balíčky ze zdroje, je nutné poskytnout předem připravené binární soubory, aby odpovídaly všem možným omezením binárního rozhraní aplikace (ABI) pro všechny uživatele. Uživatel zodpovídá za správné sestavování balíčků. Je také obtížné rozlišovat mezi binárními soubory kvůli nedostatku relevantních metadat. Výsledkem je, že uživatel vkládá do názvu balíčku informace o architektuře, operačním systému a kompilátoru. To je nežádoucí, protože během získávání balíčků se nedají vynutit omezení architektury, operačního systému a informací kompilátoru.
  • Binární vs. zdroj. NuGet je od základů navržený tak, aby poskytoval relativně malé předem připravené binární soubory. Vývojáři musí mít přístup ke zdrojovému kódu, aby zajistili kompatibilitu, výkon, integritu a ladicí možnosti ABI.
  • Žádná podpora NuGet PackageReference Balíčky NuGet nejsou podporovány pro .vcxproj soubory a v budoucnu není možné ho přidat kvůli technickým a architektonickým rozdílům mezi projekty C++ a .NET MSBuild. To znamená, že uživatelé C++ NuGet nebudou mít prospěch z funkcí, jako je použití globální mezipaměti a odkazování na závislosti v jednoduchých termínech NÁSTROJE MSBuild s přístupem k podmíněné logice.
  • Tranzitivní sledování ABI. Vcpkg znovu sestaví opensourcové závislosti ovlivněné změnou konkrétního balíčku. Pokud je například vydána nová aktualizace pro Boost, vcpkg znovu sestaví všechny závislosti Boost a knihovny, které závisí na Boost, aby se zajistilo, že stále fungují. Žádosti o přijetí změn pro aktualizace knihoven v úložišti vcpkg se nesloučí, dokud nebudou vyřešeny konflikty v čase sestavení.

vcpkg ve srovnání se správci systémových balíčků

Existuje celá řada správců systémových balíčků pro Linux, macOS a Windows, které je možné použít k získání a správě knihoven C/C++. Tito správci balíčků jsou obvykle vynikajícími volbami pro správu aplikací. Vzhledem k obecné povaze jejich podpory ale často nedoručují funkce, které jsou užitečné zejména pro vývojáře C/C++. I když se vaše kilometry budou lišit a někteří správci systémových balíčků doručují některé z těchto funkcí, žádné z těchto funkcí nemají následující:

  • Redistribuovatelné vývojářské prostředky: vcpkg může získat redistribuovatelné vývojářské prostředky, které vám pomůžou s laděním.
  • Předem připravené balíčky vs. sestavení ze zdroje: vcpkg může vytvářet balíčky ze zdroje na základě vašich vlastních požadavků. Není potřeba řešit předem sestavené předem zkompilované balíčky, aby fungovaly.
  • Správa verzí pro celý katalog: vcpkg umožňuje záviset na sadě verzí kompatibilních balíčků, a ne na mikromanage jednotlivých verzích balíčků. Můžete to přesto udělat podle potřeby, ale výchozí prostředí je navržené tak, aby bylo snadné začít s.
  • Více kopií stejné knihovny v jednom systému: Můžete mít několik kopií stejné závislosti nainstalované ve stejném systému s nástrojem vcpkg, zatímco správci systémových balíčků mohou nainstalovat jednu verzi do jednoho systémového umístění. To komplikuje věci, když máte více projektů v závislosti na různých verzích knihovny.
  • Velikost katalogu: Vzhledem k tomu, že vcpkg je specializovaná pro C/C++, má ve srovnání se správci systémových balíčků velmi velkou kolekci knihoven C/C++ a je aktivně udržována. Obecně platí, že pro vývoj jazyka C++ pravděpodobně najdete užitečné a aktuální knihovny.
  • Podpora mezi platformami: Správci systémových balíčků poskytují balíčky uzamčené konkrétnímu systému. Pokud potřebujete cílit na více než jednu příchuť operačního systému, budete muset najít jiného správce balíčků pro druhý systém. Naproti tomu vcpkg je správce balíčků pro různé platformy. Takže stačí upravit cílové buildy odpovídajícím způsobem.

V situacích, kdy správce systémových balíčků naprosto dává smysl:

  • Správci systémových balíčků obvykle dělají dobrou práci a poskytují a udržují knihovny specifické pro tento systém.
  • Předem připravené balíčky by měly fungovat na daném systému, pokud má váš projekt jednoduchou konfiguraci sestavení.
  • Pokud nemáte v úmyslu provádět žádný vývoj pro různé platformy, nebudete narazit na problémy s kompatibilitou operačního systému se správcem systémových balíčků.

Vcpkg je navržen tak, aby fungoval souběžně se správci systémových balíčků, takže můžete použít nástroj, který vám dává největší smysl pro každou závislost.

Začínáme s vcpkg

Pokud si chcete vyzkoušet vcpkg, podívejte se na naše úvodní kurzy:

Pokud váš systém sestavení není CMake nebo MSBuild, vcpkg také podporuje ruční integraci s vaším upřednostňovaným prostředím.