Koncept: Výchozí funkce
Tento článek popisuje koncept výchozích funkcí, jejich důsledků a strategií pro efektivní správu.
Výchozí funkce jsou sada funkcí , které se automaticky zahrnou při instalaci portu, pokud nejsou explicitně zakázány. Tyto funkce zajišťují, že knihovna udržuje základní úroveň funkčnosti, i když se zvyšuje složitost grafu závislostí.
Poznámka
Ne všechny porty obsahují výchozí funkce.
Výchozí funkce poskytují uživatelsky přívětivé prostředí tím, že zajišťují dostupnost základních funkcí v knihovnách s modulárními funkcemi.
Knihovna, která může například extrahovat různé formáty archivu, může mít každý formát jako volitelnou funkci. Bez výchozích funkcí nemusí knihovna obsahovat žádný algoritmus extrakce, který by zkomplikoval počáteční použití.
Balíčky nainstalované nástrojem vcpkg budou vždy obsahovat výchozí funkce, pokud to výslovně nepožaduje jinak. Toto chování platí pro balíčky vyžadované přímo uživatelem prostřednictvím souboru manifestu nebo vyvolání instalace vcpkg a pro balíčky vyžadované jako závislosti.
Přidáním atributu "default-features": false
do deklarace závislosti zakažte instalaci výchozích funkcí.
Zakázání automatické instalace výchozích funkcí je možné jenom pro požadované závislosti uživatele.
Pokud chcete zakázat výchozí funkce pro tranzitivní závislost, musíte ji zvýšit na přímou závislost na manifestu projektu.
Přidejte speciální core
funkci jako součást požadovaných funkcí balíčků, které chcete nainstalovat.
Poznámka
Podobně jako funguje režim manifestu, pokud chcete zakázat výchozí funkce pro tranzitivní závislost; musíte ho na příkazovém řádku zvýšit na žádost o přímou instalaci.
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
"extract-any"
]
}
V tomto scénáři extract-any
se instaluje s výchozími funkcemi a zajišťuje okamžitou funkčnost.
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
{
"name": "extract-any",
"default-features": false
}
]
}
extract-any
Tady se nainstaluje bez výchozích funkcí, což umožňuje přizpůsobené nastavení.
vcpkg install extract-any[core]
extract-any
Tady se nainstaluje bez výchozích funkcí pomocí speciální core
funkce.
Instalace portu s výchozími funkcemi (výchozí chování)::
vcpkg install extract-any
Nainstalujeextract-any
se s jeho výchozími funkcemi (extract-any[format-a]
), a to kvůli absenci konkrétních požadavků na funkce.Zadání funkce bez zakázání výchozích hodnot:
vcpkg install extract-any[format-b]
vede k instalaciextract-any
se zadanými (format-b
) i výchozími (format-a
) funkcemi (extract-any[format-a,format-b]
).Explicitní zakázání výchozích funkcí: nainstaluje
extract-any
se bez výchozích funkcí, protože[core]
je explicitně vyloučívcpkg install extract-any[core]
.Přechodné závislosti a výchozí funkce:
vcpkg install extract-any[format-b] portB
může mít za následekextract-any[format-a,format-b] portB
instalaci, pokudportB
závisí naextract-any[format-a]
, ale explicitně nezakazujeextract-any
výchozí funkce.Kombinování portů s různými specifikacemi funkcí:
vcpkg install extract-any[format-b] portB
instalace , včetněextract-any
výchozích funkcí, pokud nejsou explicitně vyloučenyextract-any[format-a, format-b] portB
.Komplexní zakázání výchozích funkcí:
vcpkg install extract-any[core] portB
zajišťuje, žeextract-any
se nainstaluje jenom s explicitně požadovanými funkcemi, s výjimkou výchozích hodnot.
Efektivní správa výchozích funkcí v rámci projektů:
- Buďte explicitní: Zadejte jenom funkce, které potřebujete. Slouží
[core]
k zakázání výchozích funkcí v případě potřeby. - Kontrola závislostí: Umožňuje
vcpkg depend-info <port>
porozumět rozlišení závislostí a odpovídajícím způsobem upravit konfigurace. - Využití přepsání a směrných plánů: Využijte funkce správy verzí a standardních hodnot pro větší kontrolu nad řešeními závislostí.
Další informace najdete v následujících článcích:
Přijetí jasné strategie správy výchozích funkcí pomůže zjednodušit správu závislostí projektu a zajistit tak, abyste zahrnuli jenom to, co je nezbytné pro funkce vaší aplikace.
Zpětná vazba k produktu vcpkg
vcpkg je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: