Share via


Tutoriel : Installer une dépendance à partir d’un registre Git

vcpkg utilise un concept appelé registres pour gérer les référentiels de packages. Par défaut, vcpkg recherche des bibliothèques à partir du registre public organisé à l’adresse https://github.com/Microsoft/vcpkg. Vous pouvez ajouter des registres tiers ou privés pour rendre des packages supplémentaires disponibles pour l’installation.

Pour plus d’informations sur la création de vos propres registres, lisez le tutoriel pour publier des packages dans un registre.

Les registres sont configurés à l’aide d’un vcpkg-configuration.json fichier.

Ce didacticiel vous apprendra à effectuer les opérations suivantes :

Prérequis

  • Un terminal
  • Un compiiler C++
  • vcpkg
  • CMake

1 - Créer un projet

Dans un nouveau dossier, créez les fichiers projet suivants :

Un fichier source (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 fichier projet 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 - Créer le manifeste et les fichiers de configuration

Exécutez la commande suivante :

vcpkg new --application

Le new commmand crée deux fichiers : un fichier manifeste (vcpkg.json) et un fichier configuration(vcpkg-configuration.json). En règle générale, la commande nécessite que les arguments et --version les --name arguments soient fournis, mais étant donné que ce didacticiel est une application utilisateur final, nous utilisons plutôt l’option--application.

Les fichiers générés auront le contenu suivant :

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

Le fichier de configuration généré comprend deux définitions de Registre. Qui default-registry pointe vers le registre vcpkg organisé à https://github.com/Microsoft/vcpkgl’aide de la dernière validation comme base de référence et d’un registre supplémentaire "artifacts" , qui, à l’intention de ce didacticiel, n’est pas nécessaire et peut être supprimé.

3 - Ajouter des registres privés à votre fichier de configuration vcpkg

Le code source fait référence à deux bibliothèques qui ne sont pas disponibles dans le registre organisé vcpkg. Pour satisfaire ces dépendances, nous devons ajouter https://github.com/NorthWindTraders/vcpkg-registry en tant que registre supplémentaire.

Modifiez le contenu de vcpkg-configuration.json :

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

Le fichier de configuration ajoute un registre externe comme source pour les packages et beison les beicode packages. Les registres supplémentaires doivent déclarer explicitement les packages qu’ils fournissent à l’aide de la "packages" liste. Lorsque vcpkg résout les noms de packages dans un registre, tout nom de package introuvable dans un registre supplémentaire est défini par défaut sur le "default-registry"fichier . En savoir plus sur la résolution de noms de package dans la documentation des registres.

4 - Installer des packages à partir d’un registre

Une fois qu’un registre a été ajouté au fichier de configuration, rien de spécial n’est nécessaire pour installer des packages à partir de celui-ci. vcpkg résout de manière transparente les noms de package dans votre vcpkg.json registre correct lorsque vous suivez la machine d’installation habituelle.

Ajoutez les dépendances et beison les beicode dépendances dans votre vcpkg.json fichier :

vcpkg add port beicode beison

Générez et exécutez le projet (remplacez $VCPKG_ROOT par votre chemin d’installation vcpkg) :

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

Exécutez le programme, la sortie doit ressembler à ceci :

{
    "name": "demo"
}

Étapes suivantes

  • Verrouiller vos versions pour les builds reproductibles à l’aide du contrôle de version
  • Réutiliser des fichiers binaires sur des exécutions d’intégration locale ou continue à l’aide de la mise en cache binaire
  • Gérer vos bibliothèques privées à l’aide de registres personnalisés