Auf Englisch lesen

Freigeben über


Ü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-portsoder benannte Unterverzeichnisse angegebene Verzeichnis, wenn dieses Verzeichnis keine CONTROL oder vcpkg.json Datei enthält.
  • Das verzeichnis, das in einer vcpkg-configuration.json Datei über overlay-portsoder benannte Unterverzeichnisse angegeben wird, wenn dieses Verzeichnis keine CONTROL oder vcpkg.json Datei enthält.
  • Das verzeichnis, das durch VCPKG_OVERLAY_PORTS Umgebungsvariableneinträge oder benannte Unterverzeichnisse angegeben wird, wenn dieses Verzeichnis keine CONTROL oder vcpkg.json Datei enthält.

Beim Auflösen von Portnamen wird der erste Speicherort ausgewählt, der einen übereinstimmenden Überlagerungsport enthält.

Verwenden eines Überlagerungsports

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ür a.
  • x/b/vcpkg.json, das "name" Feld auf "b".
  • x/b/portfile.cmake, die zugehörigen Buildanweisungen für b.
  • y/c/vcpkg.json, das "name" Feld auf "c".
  • y/c/portfile.cmake, die zugehörigen Buildanweisungen für c.
  • y/d/vcpkg.json, das "name" Feld auf "d".
  • y/d/portfile.cmake, die zugehörigen Buildanweisungen für d.

vcpkg berücksichtigt die folgenden Ports mit den folgenden Einstellungen:

  • --overlay-ports=x: Es gibt einen Port in dieser Überlagerung, a. Der Name wird von vcpkg.json. Das Unterverzeichnis b wird nicht berücksichtigt.
  • --overlay-ports=x/b: Es gibt einen Port in dieser Überlagerung, b. Der Name wird von vcpkg.json.
  • --overlay-ports=y: Es gibt zwei Ports in dieser Überlagerung und c d. Ihre Namen werden aus den Unterverzeichnissen yvon , und die in ihren muss deklarierten vcpkg.json Namen übereinstimmen, oder ein Fehler wird generiert, wenn vcpkg aufgefordert wird, zu berücksichtigen c oder d.

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 in vcpkg-configuration.json.
  • Umgebungsvariable: Festlegen VCPKG_OVERLAY_PORTS auf eine durch Pfad getrennte Liste.

Beispiel: Überlagerungsports

Aufgrund dieser Verzeichnisstruktur:

Beispiel für mehrere Überlagerungsportverzeichnisse

Ü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 aus my-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 aus team-ports
  • Extraktion von rapidjson aus my-ports
  • Extraktion von curl aus vcpkg/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.