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


Справочник по vcpkg-configuration.json

Файл vcpkg-configuration.json формирует часть манифеста проекта, а также vcpkg.json. Все поля в vcpkg-configuration.json файле используются только из проекта верхнего уровня. vcpkg-configuration.json Файлы в любых зависимостях игнорируются.

В режимеvcpkg-configuration.json манифеста может находиться в отдельном файле рядом vcpkg.json или его можно внедрить в "vcpkg-configuration" field.

В классическом режиме vcpkg будет использовать vcpkg-configuration.json файл в корне экземпляра vcpkg.

Общие сведения об использовании реестров с vcpkg см. в разделе "Использование реестров".

Последняя схема JSON доступна по адресу https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json. Идентификаторы с поддержкой схемы JSON, такие как Visual Studio и Visual Studio Code, могут использовать этот файл для обеспечения автозаполнения и проверки синтаксиса. Для большинства идентификаторов удостоверяется "$schema" vcpkg-configuration.json этот URL-адрес.

Пример

{
  "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json",
  "default-registry": {
    "kind": "git",
    "repository": "https://internal/mirror/of/github.com/Microsoft/vcpkg",
    "baseline": "eefee7408133f3a0fef711ef9c6a3677b7e06fd7"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/microsoft/vcpkg-docs",
      "reference": "vcpkg-registry",
      "baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
      "packages": [ "beicode", "beison" ]
    }
  ],
  "overlay-ports": [
    "./team-ports",
    "./custom-ports"
   ],
  "overlay-triplets": [ "./my-triplets" ]
}

В этом примере добавляется частный реестр в https://github.com/microsoft/vcpkg-docs/tree/vcpkg-registryкачестве источника библиотек beicode и beison. Все остальные порты находятся во внутреннем зеркале курированного каталога, размещенном в https://internal/mirror/of/github.com/Microsoft/vcpkg.

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

Поля верхнего уровня

Имя. Тип Описание
реестр по умолчанию Реестр или null Реестр, используемый для всех портов без определенного реестра
наложение портов string[] Список путей для использования в качестве портов наложения
наложение триплеты string[] Список путей для использования в качестве тройных наложений
Реестров Реестр[] Дополнительные реестры для использования для подмножеств портов

"default-registry"

Реестр, используемый для всех портов без более конкретного реестра. Реестр или null. Необязательно.

Порты, не соответствующие "packages" шаблону, разрешаются в реестр по умолчанию. Если реестр по умолчанию указан как null, порты, которые не соответствуют, не удается разрешить. Если реестр по умолчанию опущен, он неявно будет установлен в встроенный реестр , используя значение "builtin-baseline" в качестве "baseline"значения.

"registries"

Дополнительные реестры, используемые для определенных портов. Массив реестров. Необязательно.

"overlay-ports"

Список путей наложения портов. Массив строк. Необязательно.

Каждый путь в массиве должен указывать на следующее:

  • Каталог портов, vcpkg.json содержащий и portfile.cmake
  • Каталог, содержащий каталоги портов, именуемые в честь портов (zlibvcpkg.jsonдолжны быть вzlib/vcpkg.json).

Относительные пути разрешаются относительно vcpkg-configuration.json файла. Абсолютные пути можно использовать, но не рекомендуется.

"overlay-triplets"

Список путей тройного наложения. Массив строк. Необязательно.

Каждый путь в массиве должен указывать на каталог тройных файлов (см. документацию по триплетам). Относительные пути разрешаются относительно vcpkg-configuration.json файла. Абсолютные пути можно использовать, но не рекомендуется.

Поля реестра

имени Обязательно Type Описание
базис Git и встроенные реестры строка Минимальное ограничение версии для всех портов из этого реестра
kind Да строка Тип используемого реестра
Пакеты Да, если не по умолчанию строка Список портов, поступающих из этого реестра
path Реестр файловой системы строка Путь к реестру файловой системы
reference Нет строка Справочник по Git для использования для доступных версий
репозитории Реестр Git строка URI реестра Git

Реестр: "kind"

Тип используемого реестра. Строка . Обязательный.

"kind" Значение Тип реестра
"filesystem" Реестр файловой системы
"git" Реестр Git
"builtin" Встроенный реестр

Реестр: "baseline"

Идентификатор конкретного реестра для минимальных версий, используемых из этого реестра. Строка . Обязательный.

Для реестров Git и для встроенного реестра это 40-символьный git фиксация sha в репозитории реестра, который содержит aversions/baseline.json.

Для реестров файловой системы это может быть любое допустимое имя свойства JSON, которое определяется в реестре baseline.json. Если реестр файловой системы не объявляет базовые показатели, используется "default"значение.

Реестр: "reference"

Ссылка на Git, используемая для перечисления доступных версий реестра Git. Строка . Необязательно.

Если значение не указано, по умолчанию используется HEADзначение . Это поле может быть ветвью раздела для доступа к версиям, которые еще не опубликованы.

Реестр: "repository"

Универсальный код ресурса (URI) реестра Git. Строка . Требуется для реестров Git.

Строка может быть любым форматом URI, который понимает Git:

  • "https://github.com/microsoft/vcpkg"
  • "git@github.com:microsoft/vcpkg"
  • "/dev/vcpkg-registry"

Относительные пути имеют неопределенное поведение, которое изменится в будущих версиях vcpkg.

Реестр: "path"

Путь к реестру файловой системы. Строка . Требуется для реестров файловой системы.

Относительные пути разрешаются относительно vcpkg-configuration.json.

Реестр: "packages"

Список шаблонов портов, назначенных этому реестру. Массив строк. Требуется для всех реестров за пределами "default-registry".

Каждая запись должна быть следующей:

  • Имя пакета
  • Префикс имени пакета, за которым следует * (добавлено в инструмент версии 2022-12-14)

Шаблоны пакетов могут содержать только строчные буквы, цифры и -дополнительные конечные буквы *.

Примеры допустимых шаблонов:

  • *: соответствует всем именам портов
  • boost: соответствует только порту boost
  • b*: соответствует портам, начинающимся с буквы b
  • boost-*: соответствует портам, начинающимся с префикса boost-

Примеры недопустимых шаблонов:

  • *a (* должен быть последним символом в префиксе)
  • a** (разрешено только одно * )
  • a+ (+ не является допустимым символом шаблона)
  • a? (? не является допустимым символом шаблона)

Дополнительные сведения об устранении имен портов см. в документации по использованию реестров.