Порты наложения

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

Порт наложения может выступать в качестве замены существующего порта или нового порта, который в противном случае недоступен в реестре. При разрешении имен пакетов порты наложения принимают приоритет.

Порты наложения оцениваются в следующем порядке:

  • Расположения наложения, указанные в командной строке, через --overlay-ports.
  • Расположения наложения, указанные vcpkg-configuration.json в файле с помощью overlay-ports.
  • Расположения наложения, указанные переменной VCPKG_OVERLAY_PORTS среды.

При разрешении имен портов выбрано первое расположение, содержащее соответствующий порт наложения.

Использование порта наложения

Каталог может представлять набор портов наложения и может быть указан одним из двух способов:

  • Одинарный порт наложения: <directory>/sqlite3 относится к одному порту
  • Каталог портов наложения: <directory> относится к каталогу портов, допустимый порт должен содержать оба vcpkg.json и portfile.cmake.

Можно добавить порт наложения несколькими способами:

  • Командная строка: добавление одного или нескольких --overlay-ports=<directory> параметров в команду vcpkg
  • Манифест. Заполнение массива "overlay-ports" в vcpkg-configuration.json
  • Переменная среды: задайте VCPKG_OVERLAY_PORTS список путей к каталогу

Пример наложения портов

Учитывая эту структуру каталогов:

Example with multiple overlay port directories

Каталог наложения с именем team-ports содержит порты sqlite3, rapidjson и curl. Каталог наложения с именем my-ports содержит порты sqlite3 и rapidjson. Каталог vcpkg содержит каталог по умолчанию.

Запустить:

vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports

Для установки:

  • sqlite3 из my-ports

Запустить:

vcpkg install sqlite3 rapidjson curl 
    --overlay-ports=my-ports/rapidjson 
    --overlay-ports=vcpkg/ports/curl
    --overlay-ports=team-ports

Для установки:

  • sqlite3 из team-ports
  • rapidjson из my-ports
  • curl из "vcpkg/порты"

Пример. Использование портов наложения для использования зависимости диспетчера системных пакетов

Чтобы использовать зависимость диспетчера системных пакетов от vcpkg one, обратитесь к нашей записи блога.