Esercitazione: Installare una dipendenza da un registro basato su Git

vcpkg usa un concetto denominato registri per gestire i repository di pacchetti. Per impostazione predefinita, vcpkg trova librerie dal Registro di sistema pubblico curato in https://github.com/Microsoft/vcpkg. È possibile aggiungere registri di terze parti o privati per rendere disponibili altri pacchetti da installare.

Per informazioni sulla creazione di registri personalizzati, vedere l'esercitazione per pubblicare pacchetti in un registro.

I registri vengono configurati usando un vcpkg-configuration.json file.

In questa esercitazione si apprenderà come:

Prerequisiti

  • Un terminale
  • Un compiiler C++
  • vcpkg
  • CMake

1 - Creare un progetto

In una nuova cartella creare i file di progetto seguenti:

Un file di origine (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;
}

Un file di progetto CMake (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 - Creare il manifesto e i file di configurazione

Esegui questo comando:

vcpkg new --application

Il new commmand crea due file: un file manifesto (vcpkg.json) e un file di configurazione(vcpkg-configuration.json). In genere, il comando richiede che vengano forniti gli --name argomenti e --version , ma poiché questa esercitazione è un'applicazione dell'utente finale, viene invece usata l'opzione --application .

I file generati avranno il contenuto seguente:

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

Il file di configurazione generato include due definizioni del Registro di sistema. Che default-registry punta al registro vcpkg curato in https://github.com/Microsoft/vcpkg, usando il commit più recente come baseline e un registro aggiuntivo "artifacts" , che ai fini di questa esercitazione non è necessario e può essere eliminato.

3 - Aggiungere registri privati al file di configurazione vcpkg

Il codice sorgente fa riferimento a due librerie che non sono disponibili nel Registro di sistema curato vcpkg. Per soddisfare queste dipendenze, è necessario aggiungere https://github.com/microsoft/vcpkg-docs come registro aggiuntivo.

Modificare il contenuto di 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" ]
    }
  ]
}

Il file di configurazione aggiunge un registro esterno come origine per i beicode pacchetti e beison . I registri aggiuntivi devono dichiarare in modo esplicito i pacchetti forniti usando l'elenco "packages" . Quando vcpkg risolve i nomi dei pacchetti in un registro, per impostazione predefinita qualsiasi nome di pacchetto non trovato in un registro aggiuntivo verrà impostato su "default-registry". Altre informazioni sulla risoluzione dei nomi dei pacchetti sono disponibili nella documentazione dei registri.

4 - Installare pacchetti da un registro

Dopo aver aggiunto un registro al file di configurazione, non è necessario eseguire alcuna operazione speciale per installare i pacchetti da esso. vcpkg risolverà in modo trasparente i nomi dei pacchetti nel vcpkg.json registro corretto quando si seguono i normali macchinari di installazione.

Aggiungere le beicode dipendenze e beison nel vcpkg.json file:

vcpkg add port beicode beison

Compilare ed eseguire il progetto (sostituire $VCPKG_ROOT con il percorso di installazione vcpkg):

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

Eseguire il programma, l'output dovrebbe essere simile al seguente:

{
    "name": "demo"
}

Passaggi successivi