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 , .dylib und .a Dateien |
debug/lib/manual-link |
Manuell verlinkbares Debuggen .lib , .so , , .dylib und .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 , .so und .dylib .a Dateien |
lib/manual-link |
Manuell verlinkbare Version .lib , .so , , .dylib und .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.h
bereitstellen.
vcpkg verbietet die Installation einiger reservierter Headerdateinamen im Stammverzeichnis include
, z. B.: err.h
, , user.h
, time.h
und 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.cmake
Datei festlegen.
lib
und debug/lib
Verzeichnisse
Enthält statische Bibliotheken, Importbibliotheken (unter Windows) und freigegebene Bibliotheken (unter Nicht-Windows).
lib/manual-link
und debug/lib/manual-link
Verzeichnisse
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/pkgconfig
und 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.
share/<port>/copyright
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.exe
Zu -Objekt installieren.
Einige Ports erfordern, dass ihre ausführbaren Dateien in ein bin
Unterverzeichnis wechseln, in diesem Fall ist tools/<port>/bin
das empfohlene Muster .