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 , .dylib a .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.h
hlavič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.h
a 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).
lib/manual-link
adresářů a debug/lib/manual-link
adresářů
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/pkgconfig
a 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.
share/<port>/copyright
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>/bin
doporučeným vzorem .