Delen via


Zelfstudie: Een afhankelijkheid installeren vanuit een Git-register

vcpkg maakt gebruik van een concept met de naam registers voor het beheren van opslagplaatsen van pakketten. Standaard vindt vcpkg bibliotheken uit het openbare gecureerde register op https://github.com/Microsoft/vcpkg. U kunt externe of persoonlijke registers toevoegen om extra pakketten beschikbaar te maken voor installatie.

Lees de zelfstudie voor het publiceren van pakketten naar een registervoor meer informatie over het maken van uw eigen registers.

Registers worden geconfigureerd met behulp van een vcpkg-configuration.json-bestand.

In deze zelfstudie leert u het volgende:

Voorwaarden

  • Een terminal
  • Een C++ compiiler
  • vcpkg
  • CMake

1 - Een project maken

Maak in een nieuwe map de volgende projectbestanden:

Een bronbestand (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;
}

Een CMake-projectbestand (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 - Het manifest en de configuratiebestanden maken

Voer de volgende opdracht uit:

vcpkg new --application

De new commmand maakt twee bestanden: een manifestbestand (vcpkg.json) en een configuratiebestand(vcpkg-configuration.json) . Normaal gesproken is voor de opdracht vereist dat de argumenten --name en --version worden opgegeven, maar omdat deze zelfstudie een toepassing voor eindgebruikers is, gebruiken we in plaats daarvan de optie --application.

De gegenereerde bestanden hebben de volgende inhoud:

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"
    }
  ]
}

Het gegenereerde configuratiebestand bevat twee registerdefinities. De default-registry die verwijst naar het gecureerde vcpkg-register op https://github.com/Microsoft/vcpkg, met behulp van de meest recente commit als de basislijn, en een extra "artifacts" register, dat voor het doel van deze handleiding niet nodig is en kan worden verwijderd.

3 - Privéregisters toevoegen aan uw vcpkg-configuratiebestand

De broncode verwijst naar twee bibliotheken die niet beschikbaar zijn in het gecureerde vcpkg-register. Om aan deze afhankelijkheden te voldoen, moeten we https://github.com/microsoft/vcpkg-docs toevoegen als een extra register.

Wijzig de inhoud van vcpkg-configuration.json in:

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

Het configuratiebestand voegt een extern register toe als de bron voor de beicode en beison pakketten. Aanvullende registers moeten expliciet de pakketten declareren die ze leveren met behulp van de "packages" lijst. Wanneer vcpkg pakketnamen oplost naar een register, wordt elke pakketnaam die niet in een extra register wordt gevonden, gestandaardiseerd naar de "default-registry". Meer informatie over pakketnaamresolutie in de documentatie van de registers.

4 - Pakketten installeren vanuit een register

Zodra een register is toegevoegd aan het configuratiebestand, hoeft er niets speciaals te worden gedaan om er pakketten van te installeren. vcpkg zal pakketnamen in uw vcpkg.json transparant omzetten in het juiste register bij het volgen van de gebruikelijke installatiemachines.

Voeg de beicode en beison afhankelijkheden toe aan uw vcpkg.json-bestand:

vcpkg add port beicode beison

Bouw en voer het project uit (vervang $VCPKG_ROOT door uw vcpkg-installatiepad):

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

Voer het programma uit. De uitvoer moet er als volgt uitzien:

{
    "name": "demo"
}

Volgende stappen

  • Vergrendel uw versie voor herhaalbare builds met versiebeheer
  • Binaire bestanden opnieuw gebruiken in lokale of continue integratieuitvoeringen met behulp van binaire caching-
  • Uw persoonlijke bibliotheken beheren met behulp van aangepaste registers