Installationskataloglayoutkonventioner

Den här artikeln beskriver de layoutkonventioner som används av vcpkg för installationskatalogen. Installationskatalogen innehåller de filer som installeras av varje paket. Portförfattarna bör se till att deras paket följer de konventioner som beskrivs i den här artikeln.

I klassiskt läge finns installationskatalogen i $VCPKG_ROOT/installed (där $VCPKG_ROOT är din vcpkg-installationssökväg). I manifestläge har varje manifestfil en motsvarande vcpkg_installed katalog. Platsen för installationskatalogen kan ändras med alternativet --x-install-root . Oavsett åtgärdsläge förblir layouten för installationskatalogen densamma.

Installationskatalogen skapas första gången ett paket installeras, om du inte ser någon installationskatalog kan du prova att installera några paket först.

Installationskatalogens rotnivå innehåller:

  • En vcpkg katalog som håller reda på installerade paket och filer
  • En katalog för varje trilling. Varje triplet-katalog innehåller filer som installeras av varje paket.

Triplet kataloger

Utdata från varje paketinstallation finns i en trippelspecifik katalog. Paket som är installerade för trillingen x64-windows finns till exempel i installed/x64-windows katalogen.

Layouten för underkatalogerna i varje trippelkatalog är densamma:

Note

Vissa paket kan skapa filer som inte matchar konventionerna som beskrivs här. Portförfattarna bör fastställa den slutliga platsen för de producerade filerna baserat på syftet som varje fil tjänar.

Underkatalog Filtyp
bin Version .dll och .pdb filer
debug/bin Felsöka .dll och .pdb filer
debug/lib Felsöka .lib, .so, .dyliboch .a filer
debug/lib/manual-link Manuellt länkbara felsökningsfiler .lib, .so, .dyliboch .a filer
debug/plugins/<group> Felsökning av delade bibliotek för körningsbelastning
debug/lib/pkgconfig Felsöka pkg-config-filer (.pc)
include Rubrikfiler (.h, .hpp, .hxx)
lib Släpp .lib, .so.dylib och .a filer
lib/manual-link Manuellt länkbara versioner .lib, .so, .dyliboch .a filer
lib/pkgconfig Släppa pkg-config-filer (.pc)
plugins/<group> Delade bibliotek för runtime-load-version
share/<port> Ytterligare konfigurationsoberoende filer
share/<port>/copyright Licenstexten för paketet
share/<port>/usage Fil med integrationsinstruktioner för build-system
share/<port>/usage-accurate Markör för genererad användningsnoggrannhet
share/<port>/vcpkg.spdx.json Genererad programvarufaktura för material
share/<port>/vcpkg-port-config.cmake Portdefinierade CMake-funktioner och variabler
share/<lowercase-package>/<package>Config.cmake CMake-integreringsfiler för find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake CMake-åsidosättning find_package(<cmakepackagename>)
share/pkgconfig Konfigurationsoberoende pkg-config-filer (.pc)
tools/<port> Körbara verktyg och stödfiler

bin och debug/bin kataloger

På Windows innehåller dessa kataloger DLL- respektive PDB-filer för versions- respektive felsökningskonfiguration. Alla körbara filer som skapas av en port bör flyttas till en tools/<port> katalog.

include

Innehåller huvudfiler (.h, .hpp, .hxx). Layouten under den här katalogen bör återspegla den avsedda användningen av paketets huvudfiler. Till exempel bör ett contoso bibliotek som avser att använda #include <contoso/contoso.h> ange huvudfilen include/contoso/contoso.h.

vcpkg förbjuder installation av några reserverade rubrikfilnamn i katalogens include rot, till exempel: err.h, user.h, time.hoch andra. Bibliotek som anger ett förbjudet rubrikfilnamn bör placera sina huvudfiler i en include/<port> katalog. Om biblioteket tänker ersätta en systemhuvudfil bör den ange VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS principen i dess portfile.cmake.

lib och debug/lib kataloger

Innehåller statiska bibliotek, importbibliotek (på Windows) och delade bibliotek (på icke-Windows).

Innehåller bibliotek som måste länkas manuellt.

Filer som kan orsaka problem när de länkas automatiskt måste placeras i mapparna lib/manual-link i stället för katalogen lib . Om till exempel ett bibliotek är avsett att definiera main() funktionen för ett program.

lib/pkgconfig, debug/lib/pkgconfig och share/pkgconfig kataloger

Innehåller pkg-config-integreringsfiler (.pc). Ett bibliotek bör inte tillhandahålla konfigurationsberoende och konfigurationsoberoende filer samtidigt. Till exempel: installera lib/pkgconfig/contoso.pc inte och share/pkgconfig/contoso.pc.

plugins/<group> och debug/plugins/<group>

Innehåller delade bibliotek som är avsedda att läsas in under körning genom att använda program.

share/<port>

Innehåller diverse filer som installeras av varje port. Till exempel SPDX-filer, skript osv.

vcpkg förväntar sig att portar tillhandahåller en copyright fil som innehåller licensinformationen för det installerade paketet. Mer information finns i underhållsguiden .

share/<port>/usage

En textfil med instruktioner för att integrera ett bibliotek i ett projekt. Mer information finns i guiden för att tillhandahålla användningsdokumentation för paket .

share/<port>/usage-accurate

En tom markörfil som bekräftar vcpkgs genererade användningsinformation är korrekt. När den här filen installeras utelämnar vcpkg den heuristiska varningen från den genererade användningsinformationen. Mer information finns i dokumentationsguiden för användning .

share/<port>/vcpkg.spdx.json

Programvarufakturan för material som genereras av vcpkg för det installerade paketet.

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

CMake-integreringsfiler ska placeras i share mappen och respektera CMake:s regler för find_package(package) i CONFIG läge.

Om en port till exempel förväntar sig att tillhandahålla find_package(MyPackage REQUIRED)måste den ange antingen share/mypackage/MyPackageConfig.cmake eller share/mypackage/MyPackage-config.cmake.

Om ett paket innehåller CMake-integreringsfiler vcpkg_cmake_config_fixup() hjälpfunktionen ska anropas för att åtgärda eventuella sökvägar som inte kan flyttas och för att sammanfoga byggkonfigurationer.

tools/<port>

Viktigt!

vcpkg är först och främst en beroendehanterare för C++-bibliotek. Portförfattare bör vara avsiktliga när de bestämmer sig för att inkludera verktyg i installationsutdata. Till exempel: överväg att endast installera en version som kan köras när felsökningsverktyget inte behövs.

Både körbara versioner och felsökningsbara filer ska tillhandahållas när körbara filer är avsedda för körning.

Innehåller körbara verktyg som skapas av en port. Vi rekommenderar starkt, men inte nödvändigt, att varje installerad körbar fil hamnar i en underkatalog som matchar namnet på den port som producerade den. En port kan till exempel contoso installera till ContosoGenerator.exetools/contoso/ContosoGenerator.exe.

Vissa portar kräver att deras körbara filer går till en bin underkatalog, i vilket fall det rekommenderade mönstret är tools/<port>/bin.