Руководство. Обновление существующей зависимости vcpkg
В этом руководстве описано обновление версии существующей зависимости vcpkg. Прежде чем продолжить, рекомендуется ознакомиться с руководством по публикации библиотеки .
Из этого руководства вы узнаете следующее:
Необходимые компоненты
- Терминал
- vcpkg
- Git
- Компилятора C++
- Завершение руководства по упаковке
1. Создание порта наложения
Первым шагом является создание порта наложения пакета, который требуется изменить.
Создание каталога для хранения портов наложения
Каталог портов наложения можно создать в любом расположении файловой системы выбранного расположения. В любом шаге этого руководства замените $OVERLAY_LOCATION
выбранным расположением.
mkdir "$OVERLAY_LOCATION"
mkdir "$OVERLAY_LOCATION"
Скопируйте содержимое порта в каталог портов наложения
В этом руководстве вы обновите vcpkg-sample-library
порт в руководстве по публикации пакета до версии, которая поддерживает динамическую библиотеку.
Copy-Item -Path <path/to/vcpkg-sample-library> -Destination "$OVERLAY_LOCATION" -Recurse
xcopy <path/to/vcpkg-sample-library> "$OVERLAY_LOCATION" /E
cp -R <path/to/vcpkg-sample-library> "$OVERLAY_LOCATION"
2. Изменение версии портов
Измените версию vcpkg.json
1.0.1
на .
vcpkg.json
{
"name": "vcpkg-sample-library",
"version": "1.0.1",
"homepage": "https://github.com/microsoft/vcpkg-docs/tree/cmake-sample-lib",
"description": "A sample C++ library designed to serve as a foundational example for a tutorial on packaging libraries with vcpkg.",
"license": "MIT",
"dependencies": [
{
"name" : "vcpkg-cmake",
"host" : true
},
{
"name" : "vcpkg-cmake-config",
"host" : true
},
"fmt"
]
}
3. Изменение portfile.cmake
Обновление исходной ссылки
Источники обычно извлекаются с vcpkg_from_...
помощью функций поддержки.
Требуемая исходная версия определяется параметрами, например REF
или URLS
.
Если значение параметра не является производным от использования ${VERSION}
(т. е. значения из манифеста), обновите значение параметра с фактическим тегом git, фиксацией git или URL-адресом скачивания.
Получение пакета SHA512
Выполните команду vcpkg install --overlay-ports=$OVERLAY_LOCATION vcpkg-sample-library
, вы получите сообщение об ошибке SHA512 пакета. Скопируйте значение фактического хэша в портфайле.
Пример результата:
Expected hash: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Actual hash: 1290bdba0f55fcdd702a3292ce00798b173fdffa0c0cc005e15dc88c6d2e7a1143c16f29fde0647b8bddd01a7c97299cc845f7dff22811a3326cf7c69f5957f3
Модифицировать portfile.cmake
Обновите SHA512 пакета с правильным значением и обязательно удалите ONLY_STATIC_LIBRARY
ограничение, так как новая версия добавляет поддержку для его создания в виде динамической vcpkg-sample-library
библиотеки.
Файл portfile.cmake
должен выглядеть примерно так:
portfile.cmake
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Microsoft/vcpkg-docs
REF e5c3f12d5e6ac6450f43aee898f7697a06280521
SHA512 1290bdba0f55fcdd702a3292ce00798b173fdffa0c0cc005e15dc88c6d2e7a1143c16f29fde0647b8bddd01a7c97299cc845f7dff22811a3326cf7c69f5957f3
HEAD_REF cmake-sample-lib
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(PACKAGE_NAME "my_sample_lib")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY)
4. Установка порта наложения
Чтобы убедиться, что порт работает, выполните следующую команду:
vcpkg install "--overlay-ports=$OVERLAY_LOCATION" vcpkg-sample-library
5. Обновление встроенного порта реестра
Замена содержимого порта
Замените содержимое vcpkg-sample-library
ports
каталога обновленными файлами. Затем зафиксируйте изменения, выполнив следующие команды в локальном клоне репозитория vpckg:
git checkout -b vcpkg-sample-library-1.0.1
git add ports/vcpkg-sample-library
git commit -m "Update vcpkg-sample-library to version 1.0.1"
Обновление базы данных версий
Выполните команду [vcpkg x-add-version
], чтобы обновить файлы базы данных версий.
vcpkg x-add-version vcpkg-sample-library
Отправка изменений в вилку
Выполните следующие команды, чтобы обновить базу данных версий и отправить изменения в вилку https://github.com/Microsoft/vcpkg.
git add versions/.
git commit -m "Update vcpkg-sample-library to version 1.0.1" --amend
git push --set-upstream <fork remote> vcpkg-sample-library-1.0.1
6. Открытие запроса на вытягивание
- Перейдите в вилку репозитория на сайте GitHub.
- Нажмите кнопку "Сравнение и запрос на вытягивание".
- Проверка внесенных изменений
- Добавление описательного заголовка и комментариев
- Заполните контрольный список проверки pr
- Нажмите кнопку "Создать запрос на вытягивание".
Вот и все! Вы успешно обновили порт в курированном реестре vcpkg.
См. также
Дополнительные сведения см. в разделе: