Konvence rozložení instalačního adresáře

Tento článek popisuje konvence rozložení používané nástrojem vcpkg pro instalační adresář. Instalační adresář obsahuje soubory nainstalované jednotlivými balíčky. Autoři portů by měli zajistit, aby jejich balíčky dodržovaly konvence popsané v tomto článku.

V klasickém režimu se instalační adresář nachází v $VCPKG_ROOT/installed umístění (kde $VCPKG_ROOT je instalační cesta vcpkg). V režimu manifestu má každý soubor manifestu odpovídající vcpkg_installed adresář. Umístění instalačního adresáře lze změnit pomocí --x-install-root této možnosti. Bez ohledu na provozní režim zůstává rozložení instalačního adresáře stejné.

Instalační adresář se vytvoří při prvním instalaci balíčku, pokud nevidíte instalační adresář, zkuste nejdřív nainstalovat některé balíčky.

Kořenová úroveň instalačního adresáře obsahuje:

  • Adresář vcpkg , který sleduje nainstalované balíčky a soubory
  • Adresář pro každý triplet. Každý trojitý adresář obsahuje soubory nainstalované jednotlivými balíčky.

Trojité adresáře

Výstup každé instalace balíčku je obsažen v adresáři specifickém pro triplet. Například balíčky nainstalované pro x64-windows triplet jsou umístěny v installed/x64-windows adresáři.

Rozložení podadresářů uvnitř každého trojitého adresáře je stejné:

Poznámka:

Některé balíčky můžou vytvářet soubory, které neodpovídají zde popsaným konvencím. Autoři portů by měli určit konečné umístění vytvořených souborů na základě účelu, který každý soubor obsluhuje.

Podadresář Typ souboru
bin Vydání .dll a .pdb soubory
debug/bin Ladění .dll a .pdb soubory
debug/lib Ladění .lib, .so, .dyliba .a soubory
debug/lib/manual-link Ručně propojitelné ladění .lib, .so, .dylib, a .a soubory
debug/plugins/<group> Ladění sdílených knihoven za běhu
debug/lib/pkgconfig Ladění souborů pkg-config (.pc)
include Soubory hlaviček (.h, .hpp, .hxx)
lib Verze .lib, .so.dylib a .a soubory
lib/manual-link Ručně propojitelné verze .lib, .so, .dylib, a .a soubory
lib/pkgconfig Vydání souborů pkg-config (.pc)
plugins/<group> Sdílené knihovny vydané za běhu
share/<port> Další soubory nezávislé na konfiguraci
share/<port>/copyright Text licence balíčku
share/<port>/usage Soubor s pokyny k integraci sestavení systému
share/<port>/usage-accurate Vygenerovaná značka přesnosti využití
share/<port>/vcpkg.spdx.json Vygenerovaná faktura za software
share/<port>/vcpkg-port-config.cmake Funkce A proměnné CMake definované portem
share/<lowercase-package>/<package>Config.cmake Integrační soubory CMake pro find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake Přepsání CMake find_package(<cmakepackagename>)
share/pkgconfig Konfigurační soubory nezávislé na konfiguraci pkg-config (.pc)
tools/<port> Spustitelné nástroje a podpůrné soubory

bin adresářů a debug/bin adresářů

Tyto adresáře ve Windows obsahují soubory DLL a PDB pro konfiguraci vydané verze a ladění. Všechny spustitelné soubory vytvořené portem by se měly přesunout do tools/<port> adresáře.

include

Obsahuje soubory hlaviček (.h, .hpp, .hxx). Rozložení v tomto adresáři by mělo odrážet zamýšlené použití souborů hlaviček balíčku. Například contoso knihovna, která má v úmyslu použít #include <contoso/contoso.h> , by měla obsahovat soubor include/contoso/contoso.hhlavičky .

vcpkg zakáže instalaci některých rezervovaných názvů souborů hlaviček v kořenovém adresáři include , například: err.h, user.h, time.ha další. Knihovny, které poskytují název zakázaného souboru hlaviček, by měly umístit soubory hlaviček do include/<port> adresáře. Pokud knihovna hodlá nahradit systémový hlavičkový soubor, měl by nastavit zásadu VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS v jeho portfile.cmake.

lib adresářů a debug/lib adresářů

Obsahuje statické knihovny, import knihoven (ve Windows) a sdílené knihovny (v jiných systémech než Windows).

Obsahuje knihovny, které musí být ručně propojeny.

Soubory, které můžou způsobovat problémy při automatickém propojení, musí být umístěny do lib/manual-link složek místo lib adresáře. Pokud je například knihovna určená k definování main() funkce pro program.

lib/pkgconfiga debug/lib/pkgconfigshare/pkgconfig adresáře

Obsahuje integrační soubory pkg-config (.pc). Knihovna by neměla současně poskytovat soubory závislé na konfiguraci a nezávislé na konfiguraci. Například: nenainstalujte lib/pkgconfig/contoso.pc a share/pkgconfig/contoso.pc.

plugins/<group> a debug/plugins/<group>

Obsahuje sdílené knihovny, které mají být načteny během běhu pomocí aplikací.

share/<port>

Obsahuje různé soubory nainstalované jednotlivými porty. Například soubory SPDX, skripty atd.

Vcpkg očekává, že porty poskytnou copyright soubor, který obsahuje informace o licenci nainstalovaného balíčku. Další informace najdete v průvodci údržbou.

share/<port>/usage

Textový soubor s pokyny pro integraci knihovny do projektu. Další informace najdete v průvodci poskytnutím dokumentace k používání balíčků .

share/<port>/usage-accurate

Prázdný soubor značky, který potvrzuje, že vygenerované informace o využití vcpkg jsou přesné. Při instalaci tohoto souboru vcpkg vynechá heuristické upozornění z vygenerovaných informací o použití. Další informace najdete v průvodci dokumentací k používání .

share/<port>/vcpkg.spdx.json

Softwarové vyúčtování materiálů vygenerovaných nástrojem vcpkg pro nainstalovaný balíček.

share/<lowercase-package>/<package>Config.cmake, share/<package>/<package>-config.cmake

Integrační soubory CMake by se měly umístit do share složky a dodržovat pravidla CMake pro find_package(package) v CONFIG režimu.

Pokud například port očekává, že ho poskytne find_package(MyPackage REQUIRED), musí zadat buď share/mypackage/MyPackageConfig.cmake nebo share/mypackage/MyPackage-config.cmake.

Pokud balíček poskytuje integrační soubory CMake, zobrazí se vcpkg_cmake_config_fixup() Pomocná funkce by se měla vyvolat, aby opravili všechny nepřiřazené cesty a sloučili konfigurace sestavení.

tools/<port>

Důležité

Vcpkg je především správce závislostí knihovny C++. Autoři portů by měli být při rozhodování o zahrnutí nástrojů do výstupu instalace úmyslní. Příklad: Zvažte instalaci pouze spustitelného souboru vydané verze, pokud není potřeba nástroj pro ladění.

Pokud jsou spustitelné soubory určené k použití za běhu, měly by být k dispozici verze i ladicí spustitelné soubory.

Obsahuje spustitelné nástroje vytvořené portem. Důrazně se doporučuje, ale nevyžaduje se, aby každý nainstalovaný spustitelný soubor chodil do podadresáře odpovídající názvu portu, který ho vytvořil. Například contoso port může nainstalovat ContosoGenerator.exe do tools/contoso/ContosoGenerator.exe.

Některé porty vyžadují, aby jejich spustitelné soubory přešly do bin podadresáře, v takovém případě je tools/<port>/bindoporučeným vzorem .