Lernprogramm: Installieren einer Abhängigkeit aus einer Git-basierten Registrierung

vcpkg verwendet ein Konzept namens Registries zum Verwalten von Repositorys von Paketen. Standardmäßig findet vcpkg Bibliotheken aus der öffentlichen kuratierten Registrierung unter https://github.com/Microsoft/vcpkg. Sie können Drittanbieter- oder private Registrierungen hinzufügen, um zusätzliche Pakete zur Installation zur Verfügung zu stellen.

Informationen zum Erstellen eigener Registrierungen finden Sie im Lernprogramm zum Veröffentlichen von Paketen in einer Registrierung.

Registrierungen werden mithilfe einer vcpkg-configuration.json Datei konfiguriert.

In diesem Tutorial lernen Sie Folgendes:

Voraussetzungen

  • Ein Terminal
  • Ein C++-Compiiler
  • vcpkg
  • CMake

1 – Erstellen eines Projekts

Erstellen Sie in einem neuen Ordner die folgenden Projektdateien:

Eine Quelldatei (main.cpp):

#include <iostream>
#include <beison.h>

int main()
{
    beison::Object obj;
    obj.insert("name", beison::Value::string("demo"));
    std::cout << beison::stringify(obj) << std::endl;
    return 0;
}

Eine CMake-Projektdatei (CMakeLists.txt):

cmake_minimum_required(VERSION 3.18)

project(demo CXX)

add_executable(main main.cpp)

find_package(beicode CONFIG REQUIRED)
find_package(beison CONFIG REQUIRED)
target_link_libraries(main PRIVATE beicode::beicode beison::beison)

2 – Erstellen der Manifest- und Konfigurationsdateien

Führen Sie den folgenden Befehl aus:

vcpkg new --application

Der new commmand erstellt zwei Dateien: eine Manifestdatei (vcpkg.json) und eine Konfigurationsdatei(vcpkg-configuration.json). In der Regel muss --name der Befehl bereitgestellt --version werden, aber da es sich bei diesem Lernprogramm um eine Endbenutzeranwendung handelt, verwenden wir stattdessen die --application Option.

Die generierten Dateien haben den folgenden Inhalt:

vcpkg.json

{}

vcpkg-configuration.json

{
  "default-registry": {
    "kind": "git",
    "baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "artifact",
      "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
      "name": "microsoft"
    }
  ]
}

Die generierte Konfigurationsdatei enthält zwei Registrierungsdefinitionen. Dies default-registry verweist auf die kuratierte vcpkg-Registrierung bei https://github.com/Microsoft/vcpkg, wobei der neueste Commit als Basisplan verwendet wird, und eine zusätzliche "artifacts" Registrierung, die für den Zweck dieses Lernprogramms unnötig ist und gelöscht werden kann.

3 – Hinzufügen privater Registrierungen zu Ihrer vcpkg-Konfigurationsdatei

Der Quellcode verweist auf zwei Bibliotheken, die in der kuratierten vcpkg-Registrierung nicht verfügbar sind. Um diese Abhängigkeiten zu erfüllen, müssen wir als zusätzliche Registrierung hinzufügen https://github.com/NorthWindTraders/vcpkg-registry .

Ändern sie den Inhalt von vcpkg-configuration.json in:

{
  "default-registry": {
    "kind": "git",
    "baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/northwindtraders/vcpkg-registry",
      "baseline": "dacf4de488094a384ca2c202b923ccc097956e0c",
      "packages": [ "beicode", "beison" ]
    }
  ]
}

Die Konfigurationsdatei fügt eine externe Registrierung als Quelle für die und beison die beicode Pakete hinzu. Zusätzliche Registrierungen müssen explizit die Pakete deklarieren, die sie mithilfe der "packages" Liste bereitstellen. Wenn vcpkg Paketnamen in eine Registrierung aufgelöst, wird standardmäßig jeder Paketname, der in einer zusätzlichen Registrierung nicht gefunden wird, auf die "default-registry". Weitere Informationen zur Paketnamenauflösung finden Sie in der Registrierungsdokumentation.

4 – Installieren von Paketen aus einer Registrierung

Nachdem der Konfigurationsdatei eine Registrierung hinzugefügt wurde, muss nichts Besonderes unternommen werden, um Pakete daraus zu installieren. vcpkg löst die Paketnamen in Der vcpkg.json richtigen Registrierung transparent auf, wenn sie den üblichen Installationsmaschinen folgen.

Fügen Sie die beicode Abhängigkeiten und beison Abhängigkeiten in Ihrer vcpkg.json Datei hinzu:

vcpkg add port beicode beison

Erstellen sie das Projekt, und führen Sie es aus (ersetzen $VCPKG_ROOT Sie den vcpkg-Installationspfad):

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build

Führen Sie das Programm aus, sollte die Ausgabe wie folgt aussehen:

{
    "name": "demo"
}

Nächste Schritte