Überlagerungsports
In der Regel werden vcpkg-Ports aus Registern abgerufen. Es ist sehr wahrscheinlich, dass die meisten der ports, die Sie installieren, von der offiziellen vcpkg Registry bei https://github.com/Microsoft/vcpkg. Mit vcpkg können Sie Überlagerungsports installieren, die ihnen über das Dateisystem zur Verfügung stehen.
Ein Überlagerungsport kann als Drop-In-Ersatz für einen vorhandenen Port oder als neuer Port fungieren, der andernfalls nicht in einer Registrierung verfügbar ist. Beim Auflösen von Paketnamen haben Überlagerungsports Vorrang.
Überlagerungsports werden in der folgenden Reihenfolge ausgewertet:
- Das in der Befehlszeile über
--overlay-ports
oder benannte Unterverzeichnisse angegebene Verzeichnis, wenn dieses Verzeichnis keineCONTROL
odervcpkg.json
Datei enthält. - Das verzeichnis, das in einer
vcpkg-configuration.json
Datei überoverlay-ports
oder benannte Unterverzeichnisse angegeben wird, wenn dieses Verzeichnis keineCONTROL
odervcpkg.json
Datei enthält. - Das verzeichnis, das durch
VCPKG_OVERLAY_PORTS
Umgebungsvariableneinträge oder benannte Unterverzeichnisse angegeben wird, wenn dieses Verzeichnis keineCONTROL
odervcpkg.json
Datei enthält.
Beim Auflösen von Portnamen wird der erste Speicherort ausgewählt, der einen übereinstimmenden Überlagerungsport enthält.
Wenn ein Überlagerungsport angegeben ist, versucht vcpkg zunächst, dieses Verzeichnis als Port zu laden. Wenn dies erfolgreich ist, wird das Verzeichnis selbst als Port behandelt, und der Name der Überlagerung wird von der Datei oder vcpkg.json
der CONTROL
Datei abgeleitet. Andernfalls werden Unterverzeichnisse mit dem Überlagerungsportnamen berücksichtigt.
Gültige Ports enthalten portfile.cmake
, und entweder vcpkg.json
oder CONTROL
.
Betrachten Sie beispielsweise die folgende Verzeichnisstruktur:
x/vcpkg.json
, das"name"
Feld auf"a"
.x/portfile.cmake
, die zugehörigen Buildanweisungen füra
.x/b/vcpkg.json
, das"name"
Feld auf"b"
.x/b/portfile.cmake
, die zugehörigen Buildanweisungen fürb
.y/c/vcpkg.json
, das"name"
Feld auf"c"
.y/c/portfile.cmake
, die zugehörigen Buildanweisungen fürc
.y/d/vcpkg.json
, das"name"
Feld auf"d"
.y/d/portfile.cmake
, die zugehörigen Buildanweisungen fürd
.
vcpkg berücksichtigt die folgenden Ports mit den folgenden Einstellungen:
--overlay-ports=x
: Es gibt einen Port in dieser Überlagerung,a
. Der Name wird vonvcpkg.json
. Das Unterverzeichnisb
wird nicht berücksichtigt.--overlay-ports=x/b
: Es gibt einen Port in dieser Überlagerung,b
. Der Name wird vonvcpkg.json
.--overlay-ports=y
: Es gibt zwei Ports in dieser Überlagerung undc
d
. Ihre Namen werden aus den Unterverzeichnisseny
von , und die in ihren muss deklariertenvcpkg.json
Namen übereinstimmen, oder ein Fehler wird generiert, wenn vcpkg aufgefordert wird, zu berücksichtigenc
oderd
.
Sie können der Overlayportkonfiguration auf verschiedene Arten hinzufügen:
- Befehlszeile: Fügen Sie der Befehlszeile eine oder mehrere
--overlay-ports=<directory>
Optionen hinzu. - Manifest: Auffüllen des
"overlay-ports"
Arrays invcpkg-configuration.json
. - Umgebungsvariable: Festlegen
VCPKG_OVERLAY_PORTS
auf eine durch Pfad getrennte Liste.
Aufgrund dieser Verzeichnisstruktur:
Überlagerungsverzeichnis namens Teamports enthält Ports sqlite3, rapidjson und curl. Überlagerungsverzeichnis mit dem Namen "my-ports" enthält Ports "sqlite3" und "rapidjson". Das vcpkg-Verzeichnis enthält die Standardregistrierung.
Führen Sie Folgendes aus:
vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports
So führen Sie die Installation durch:
- Extraktion von
sqlite3
ausmy-ports
Führen Sie Folgendes aus:
vcpkg install sqlite3 rapidjson curl
--overlay-ports=my-ports/rapidjson
--overlay-ports=vcpkg/ports/curl
--overlay-ports=team-ports
So führen Sie die Installation durch:
- Extraktion von
sqlite3
austeam-ports
- Extraktion von
rapidjson
ausmy-ports
- Extraktion von
curl
ausvcpkg/ports
Beispiel: Verwenden von Überlagerungsports zur Verwendung einer Abhängigkeit des Systempaket-Managers
Informationen zur Verwendung einer Systempaket-Manager-Abhängigkeit über ein vcpkg one finden Sie in unserem Blogbeitrag.
Feedback zu vcpkg
vcpkg ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: