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


Руководство. Обновление существующей зависимости vcpkg

В этом руководстве описано обновление версии существующей зависимости vcpkg. Прежде чем продолжить, рекомендуется ознакомиться с руководством по публикации библиотеки .

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

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

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. Открытие запроса на вытягивание

  1. Перейдите в вилку репозитория на сайте GitHub.
  2. Нажмите кнопку "Сравнение и запрос на вытягивание".
    1. Проверка внесенных изменений
    2. Добавление описательного заголовка и комментариев
    3. Заполните контрольный список проверки pr
  3. Нажмите кнопку "Создать запрос на вытягивание".

Вот и все! Вы успешно обновили порт в курированном реестре vcpkg.

См. также

Дополнительные сведения см. в разделе: