Поделиться через


Руководство. Установка зависимости из реестра на основе Git

vcpkg использует концепцию, называемую реестрами, для управления репозиториями пакетов. По умолчанию vcpkg находит библиотеки из общедоступного курированного реестра по адресу https://github.com/Microsoft/vcpkg. Вы можете добавить сторонние или частные реестры, чтобы сделать дополнительные пакеты доступными для установки.

Дополнительные сведения о создании собственных реестров см. в руководстве по публикации пакетов в реестре.

Реестры настраиваются с помощью vcpkg-configuration.json файла.

Из этого руководства вы узнаете следующее:

Необходимые компоненты

  • Терминал
  • Компиилер C++
  • vcpkg
  • CMake.

1. Создание проекта

В новой папке создайте следующие файлы проекта:

Исходный файл (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;
}

Файл проекта 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. Создание файлов манифеста и конфигурации

Выполните следующую команду:

vcpkg new --application

Commmand new создает два файла: файл манифеста (vcpkg.json) и файл конфигурации(vcpkg-configuration.json). Как правило, команда требует --name предоставления аргументов и --version аргументов, но так как это приложение является конечным пользователем, мы используем --application этот параметр.

Созданные файлы будут содержать следующее содержимое:

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

Созданный файл конфигурации содержит два определения реестра. Указывает default-registry на проверенный реестр vcpkg, используя последнюю фиксацию в качестве базового плана https://github.com/Microsoft/vcpkgи дополнительный "artifacts" реестр, который для целей этого руководства не требуется и может быть удален.

3. Добавление частных реестров в файл конфигурации vcpkg

Исходный код ссылается на две библиотеки, недоступные в курированном реестре vcpkg. Для удовлетворения этих зависимостей необходимо добавить https://github.com/microsoft/vcpkg-docs в качестве дополнительного реестра.

Измените содержимое vcpkg-configuration.json следующим образом:

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

Файл конфигурации добавляет внешний реестр в качестве источника и beicode beison пакетов. Дополнительные реестры должны явно объявлять пакеты, предоставляемые с помощью "packages" списка. Если vcpkg разрешает имена пакетов в реестр, любое имя пакета, не найденное в дополнительном реестре, по умолчанию будет присвоено "default-registry"значение . Дополнительные сведения о разрешении имен пакета см. в документации по реестрам.

4. Установка пакетов из реестра

После добавления реестра в файл конфигурации ничего особенного не требуется для установки пакетов из него. vcpkg будет прозрачно разрешать имена пакетов в vcpkg.json правильном реестре при выполнении обычного оборудования установки.

beicode Добавьте в файл зависимостиvcpkg.json:beison

vcpkg add port beicode beison

Создайте и запустите проект (замените $VCPKG_ROOT путь установки vcpkg):

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

Запустите программу, выходные данные должны выглядеть следующим образом:

{
    "name": "demo"
}

Следующие шаги

  • Блокировка версий для повторяемых сборок с помощью управления версиями
  • Повторное использование двоичных файлов в локальной или непрерывной интеграции с помощью двоичного кэширования
  • Управление частными библиотеками с помощью пользовательских реестров