Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обычно порты 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 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/ports
Пример. Использование портов наложения для использования зависимости диспетчера системных пакетов
Чтобы использовать зависимость диспетчера системных пакетов от vcpkg one, обратитесь к нашей записи блога.