Руководство. Установка зависимости из реестра на основе 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"
}
Следующие шаги
- Блокировка версий для повторяемых сборок с помощью управления версиями
- Повторное использование двоичных файлов в локальной или непрерывной интеграции с помощью двоичного кэширования
- Управление частными библиотеками с помощью пользовательских реестров