Обычно порты vcpkg получаются из реестров. Скорее всего, большинство установленных портов приходят из официального реестра vcpkg по адресу https://github.com/Microsoft/vcpkg. vcpkg позволяет устанавливать порты, доступные для вас через файловую систему, мы вызываем эти порты, наложения портов.
Порт наложения может выступать в качестве замены существующего порта или нового порта, который в противном случае недоступен в реестре. При разрешении имен пакетов порты наложения принимают приоритет.
Порты наложения оцениваются в следующем порядке:
Каталог, указанный в командной строке с помощью --overlay-portsподкаталогов или именованных подкаталогов, если этот каталог отсутствует CONTROL или vcpkg.json файл.
Каталог, указанный vcpkg-configuration.json в файле с помощью overlay-portsподкаталогов или именованных подкаталогов, если этот каталог отсутствует CONTROL или vcpkg.json файл.
Каталог, указанный VCPKG_OVERLAY_PORTS в записях переменной среды или именованных подкаталогах, если этот каталог отсутствует CONTROL или vcpkg.json файл.
При разрешении имен портов выбрано первое расположение, содержащее соответствующий порт наложения.
Использование порта наложения
Если указан порт наложения, сначала vcpkg пытается загрузить этот каталог в качестве порта. В случае успешного выполнения сам каталог рассматривается как порт, а имя наложения является производным от CONTROL файла или vcpkg.json файла. В противном случае рассматриваются подкаталоги с именем порта наложения.
Допустимые порты содержат portfile.cmakeи vcpkg.jsonCONTROLлибо.
Например, рассмотрим следующую структуру каталогов:
x/vcpkg.json"name", для поля задано "a"значение .
x/portfile.cmake, связанные инструкции по сборке для a.
x/b/vcpkg.json"name", для поля задано "b"значение .
x/b/portfile.cmake, связанные инструкции по сборке для b.
y/c/vcpkg.json"name", для поля задано "c"значение .
y/c/portfile.cmake, связанные инструкции по сборке для c.
y/d/vcpkg.json"name", для поля задано "d"значение .
y/d/portfile.cmake, связанные инструкции по сборке для d.
vcpkg рассмотрит следующие порты с учетом следующих параметров:
--overlay-ports=x: в этом наложении aесть один порт. Имя является производным от vcpkg.json. Подкаталог b не считается.
--overlay-ports=x/b: в этом наложении bесть один порт. Имя является производным от vcpkg.json.
--overlay-ports=y: в этом наложении есть два порта и cd. Их имена являются производными от подкаталогов y, и имена, объявленные в их vcpkg.json совпадении, или ошибка будет создана, если vcpkg будет предложено рассмотреть c или d.
Конфигурацию порта наложения можно добавить несколькими способами:
Командная строка: добавьте один или несколько --overlay-ports=<directory> параметров в командную строку.
Манифест. Заполнение массива "overlay-ports" в vcpkg-configuration.json.
Переменная среды: задайте VCPKG_OVERLAY_PORTS для списка символов с разделителями пути.
Пример наложения портов
Учитывая эту структуру каталогов:
Каталог наложения с именем team-ports содержит порты sqlite3, rapidjson и curl. Каталог наложения с именем my-ports содержит порты sqlite3 и rapidjson. Каталог vcpkg содержит реестр по умолчанию.
Пример. Использование портов наложения для использования зависимости диспетчера системных пакетов
Чтобы использовать зависимость диспетчера системных пакетов от vcpkg one, обратитесь к нашей записи блога.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о vcpkg
vcpkg — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: