Compartir a través de


Tutorial: Instalación de una dependencia desde un registro basado en Git

vcpkg usa un concepto denominado registros para administrar repositorios de paquetes. De forma predeterminada, vcpkg busca bibliotecas del registro mantenido público en https://github.com/Microsoft/vcpkg. Puede agregar registros privados o de terceros para que haya paquetes adicionales disponibles para su instalación.

Para obtener información sobre cómo crear sus propios registros, lea el tutorial para publicar paquetes en un registro.

Los registros se configuran mediante un vcpkg-configuration.json archivo .

En este tutorial, aprenderá a:

Requisitos previos

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

1 - Creación de un proyecto

En una nueva carpeta, cree los siguientes archivos de proyecto:

Un archivo de origen (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 archivo de proyecto de 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 - Crear el manifiesto y los archivos de configuración

Ejecute el siguiente comando:

vcpkg new --application

La new commmand crea dos archivos: un archivo de manifiesto (vcpkg.json) y un archivo configuration(vcpkg-configuration.json). Normalmente, el comando requiere que se proporcionen los --name argumentos y --version , pero como este tutorial es una aplicación de usuario final, usamos la --application opción en su lugar.

Los archivos generados tendrán el siguiente contenido:

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

El archivo de configuración generado incluye dos definiciones del Registro. que default-registry apunta al registro vcpkg mantenido en https://github.com/Microsoft/vcpkg, utilizando la confirmación más reciente como línea de base y un registro adicional "artifacts" , que para el propósito de este tutorial no es necesario y se puede eliminar.

3 - Agregar registros privados al archivo de configuración de vcpkg

El código fuente hace referencia a dos bibliotecas que no están disponibles en el registro mantenido de vcpkg. Para satisfacer estas dependencias, es necesario agregarlas https://github.com/microsoft/vcpkg-docs como un registro adicional.

Modifique el contenido de vcpkg-configuration.json en:

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

El archivo de configuración agrega un registro externo como origen para los beicode paquetes y beison . Los registros adicionales deben declarar explícitamente los paquetes que proporcionan mediante la "packages" lista. Cuando vcpkg resuelve los nombres de paquetes en un registro, cualquier nombre de paquete que no se encuentre en un registro adicional se usará de forma predeterminada en ."default-registry" Obtenga más información sobre la resolución de nombres de paquete en la documentación de registros.

4- Instalación de paquetes desde un registro

Una vez que se ha agregado un registro al archivo de configuración, no es necesario realizar nada especial para instalar paquetes desde él. vcpkg resolverá de forma transparente los nombres de paquete en vcpkg.json el registro correcto cuando siga la maquinaria de instalación habitual.

Agregue las dependencias y beison en el beicode vcpkg.json archivo:

vcpkg add port beicode beison

Compile y ejecute el proyecto (sustituya $VCPKG_ROOT por la ruta de instalación de vcpkg):

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

Ejecute el programa; la salida debería ser similar a la siguiente:

{
    "name": "demo"
}

Pasos siguientes

  • Bloquear las versiones de las compilaciones repetibles mediante el control de versiones
  • Reutilización de archivos binarios en ejecuciones de integración local o continua mediante el almacenamiento en caché binario
  • Administración de las bibliotecas privadas mediante registros personalizados