Freigeben über


Installationsverzeichnislayoutkonventionen

In diesem Artikel werden die layoutkonventionen beschrieben, die von vcpkg für das Installationsverzeichnis verwendet werden. Das Installationsverzeichnis enthält die dateien, die von jedem Paket installiert wurden. Portautoren sollten sicherstellen, dass ihre Pakete den in diesem Artikel beschriebenen Konventionen entsprechen.

Im klassischen Modus befindet sich das Installationsverzeichnis ( $VCPKG_ROOT/installed wo $VCPKG_ROOT befindet sich Ihr vcpkg-Installationspfad). Im Manifestmodus verfügt jede Manifestdatei über ein entsprechendes vcpkg_installed Verzeichnis. Der Speicherort des Installationsverzeichnisses kann mit der --x-install-root Option geändert werden. Unabhängig vom Betriebsmodus bleibt das Layout des Installationsverzeichnisses unverändert.

Das Installationsverzeichnis wird beim ersten Installieren eines Pakets erstellt, wenn beim ersten Installieren eines Pakets kein Installationsverzeichnis angezeigt wird, versuchen Sie zuerst, einige Pakete zu installieren.

Die Stammebene des Installationsverzeichnisses enthält:

  • Ein vcpkg Verzeichnis, in dem installierte Pakete und Dateien nachverfolgt werden
  • Ein Verzeichnis für jedes Triplet. Jedes Tripletverzeichnis enthält Dateien, die von jedem Paket installiert werden.

Triplet-Verzeichnisse

Die Ausgabe jeder Paketinstallation ist in einem triplet-spezifischen Verzeichnis enthalten. Pakete, die für das x64-windows Triplet installiert sind, befinden sich beispielsweise im installed/x64-windows Verzeichnis.

Das Layout für die Unterverzeichnisse in jedem Tripletverzeichnis ist identisch:

Hinweis

Einige Pakete erzeugen möglicherweise Dateien, die nicht den hier beschriebenen Konventionen entsprechen. Portautoren sollten den endgültigen Speicherort der produzierten Dateien basierend auf dem Zweck der einzelnen Dateien bestimmen.

Unterverzeichnis Dateityp
bin Freigeben .dll und .pdb Dateien
debug/bin Debuggen .dll und .pdb Dateien
debug/lib Debuggen .lib, , .so, .dylibund .a Dateien
debug/lib/manual-link Manuell verlinkbares Debuggen .lib, .so, , .dylibund .a Dateien
debug/plugins/<group> Debugdateien .dll zum Laden der Laufzeit
debug/lib/pkgconfig Debuggen von pkgconfig-Dateien (.pc)
include Headerdateien (.h, .hpp, .hxx)
lib Freigeben .lib, .sound .dylib .a Dateien
lib/manual-link Manuell verlinkbare Version .lib, .so, , .dylibund .a Dateien
lib/pkgconfig Pkgconfig-Dateien (.pc)
plugins/<group> Runtime-Load .dll Release-Dateien
share/<port> Zusätzliche konfigurationsunabhängige Dateien
share/<port>/copyright Der Lizenztext für das Paket
share/<port>/usage Anleitungsdatei für die Buildsystemintegration
share/<port>/vcpkg-port-config.cmake Portdefinierte CMake-Funktionen und -Variablen
share/<lowercase-package>/<package>Config.cmake CMake-Integrationsdateien für find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake CMake-Außerkraftsetzung find_package(<cmakepackagename>)
share/pkgconfig Konfigurationsunabhängige pkgconfig-Dateien (.pc)
tools/<port> Ausführbare Tools

bin und debug/bin Verzeichnisse

Unter Windows enthalten diese Verzeichnisse DLL- und PDB-Dateien für die Versions- bzw. Debugkonfiguration. Jede ausführbare Datei, die von einem Port erstellt wird, sollte in ein tools/<port> Verzeichnis verschoben werden.

include

Enthält Headerdateien (.h, .hpp, .hxx). Das Layout unter diesem Verzeichnis sollte die beabsichtigte Verwendung der Headerdateien des Pakets widerspiegeln. Beispielsweise sollte eine contoso Bibliothek, die verwendet werden soll #include <contoso/contoso.h> , die Headerdatei include/contoso/contoso.hbereitstellen.

vcpkg verbietet die Installation einiger reservierter Headerdateinamen im Stammverzeichnis include , z. B.: err.h, , user.h, time.hund andere. Bibliotheken, die einen unzulässigen Headerdateinamen bereitstellen, sollten ihre Headerdateien in einem include/<port> Verzeichnis platzieren. Wenn die Bibliothek beabsichtigt, eine Systemheaderdatei zu ersetzen, sollte sie die VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS Richtlinie in der zugehörigen portfile.cmakeDatei festlegen.

lib und debug/lib Verzeichnisse

Enthält statische Bibliotheken, Importbibliotheken (unter Windows) und freigegebene Bibliotheken (unter Nicht-Windows).

Enthält Bibliotheken, die manuell verknüpft werden müssen.

Dateien, die probleme verursachen können, wenn die Verknüpfung automatisch in den lib/manual-link Ordnern anstelle des lib Verzeichnisses platziert werden muss. Wenn beispielsweise eine Bibliothek die Funktion für ein Programm definieren main() soll.

lib/pkgconfigund debug/lib/pkgconfig share/pkgconfig Verzeichnisse

Enthält pkgconfig-Integrationsdateien (.pc). Eine Bibliothek sollte keine konfigurationsabhängigen und konfigurationsunabhängigen Dateien gleichzeitig bereitstellen. Beispiel: Nicht installieren lib/pkgconfig/contoso.pc und share/pkgconfig/contoso.pc.

plugins/<group> und debug/plugins/<group>

Enthält freigegebene Bibliotheken, die während der Laufzeit durch die Nutzung von Anwendungen geladen werden sollen.

share/<port>

Enthält verschiedene Dateien, die von jedem Port installiert werden. Beispiel: SPDX-Dateien, Skripts usw.

vcpkg erwartet, dass Ports eine copyright Datei bereitstellen, die die Lizenzinformationen des installierten Pakets enthält. Weitere Informationen finden Sie im Betreuerhandbuch .

share/<port>/usage

Eine Textdatei mit Anweisungen zum Integrieren einer Bibliothek in ein Projekt. Weitere Informationen finden Sie in der Anleitung zur Bereitstellung der Verwendungsdokumentation für Pakete .

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

CMake-Integrationsdateien sollten in den share Ordner eingefügt werden und die Regeln von CMake für find_package(package) im CONFIG Modus.

Wenn beispielsweise ein Port die Bereitstellung find_package(MyPackage REQUIRED)erwartet, muss er entweder share/mypackage/MyPackageConfig.cmake oder share/mypackage/MyPackage-config.cmake.

Wenn ein Paket CMake-Integrationsdateien bereitstellt, vcpkg_cmake_config_fixup() Hilfsfunktion sollte aufgerufen werden, um nicht verkettete Pfade zu beheben und Buildkonfigurationen zusammenzuführen.

tools/<port>

Wichtig

vcpkg ist in erster Linie ein C++-Bibliotheksabhängigkeits-Manager. Portautoren sollten bei der Entscheidung, Tools in die Installationsausgabe aufzunehmen, bewusst sein. Beispiel: Erwägen Sie die Installation einer ausführbaren Version, wenn das Debugtool nicht benötigt wird.

Sowohl Release- als auch Debug-ausführbare Dateien sollten bereitgestellt werden, wenn die ausführbaren Dateien für die Laufzeitverwendung vorgesehen sind.

Enthält ausführbare Tools, die von einem Port erstellt werden. Es wird dringend empfohlen, aber nicht erforderlich, dass jede installierte ausführbare Datei in ein Unterverzeichnis wechselt, das dem Namen des Port entspricht, der sie erzeugt hat. Ein Port kann z. B. ein contoso ContosoGenerator.exe tools/contoso/ContosoGenerator.exeZu -Objekt installieren.

Einige Ports erfordern, dass ihre ausführbaren Dateien in ein bin Unterverzeichnis wechseln, in diesem Fall ist tools/<port>/bindas empfohlene Muster .