Sdílet prostřednictvím


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> Soubory ladění .dll za běhu
debug/lib/pkgconfig Ladění souborů pkgconfig (.pc)
include Hlavičkové soubory (.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 Soubory Pkgconfig (.pc)
plugins/<group> Soubory vydaných verzí .dll 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>/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 Soubory pkgconfig nezávislé na konfiguraci (.pc)
tools/<port> Spustitelné nástroje

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/pkgconfig share/pkgconfig adresáře

Obsahuje integrační soubory pkgconfig (.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/<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 .