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


ФАЙЛЫ CONTROL

Предупреждение

CONTROL файлы устарели и сохраняются только для обратной совместимости с более ранними версиями vcpkg. Используйте файлы манифеста vcpkg.json для любого нового созданного порта.

Используется ./vcpkg format-manifest path/to/CONTROL для преобразования существующего CONTROL файла в vcpkg.json файл.

Файл CONTROL содержит метаданные о порту. Синтаксис основан на формате Debiancontrol, хотя мы поддерживаем только подмножество полей, описанных здесь.

Имена полей чувствительны к регистру и начинают строку без начальных пробелов. Абзацы разделены одной или несколькими пустыми строками.

Исходный абзац

Первый абзац в файле — исходный CONTROL абзац. Он должен иметь SourceVersionполе и Description поле. Полный набор полей описан ниже.

Примеры

Source: ace
Version: 6.5.5
Description: The ADAPTIVE Communication Environment
Source: vtk
Version: 8.2.0
Port-Version: 2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c

Распознанные поля

Оригинал

Имя порта.

При добавлении новых портов следует учитывать, что имя может конфликтуть с другими проектами, которые не являются частью vcpkg. Например, json конфликтует с слишком большим количеством других проектов, поэтому необходимо добавить область в имя, напримерtaocpp-json, чтобы сделать его уникальным. Убедитесь, что в поисковой системе нет конфликтов, а также в других коллекциях пакетов.

Коллекции пакетов для проверка для конфликтов:

Версия

Версия библиотеки.

Это поле является буквенно-цифровой строкой, которая также может содержать .или_-. Попытка упорядочивания версий не выполняется; все версии обрабатываются как битовые строки и оцениваются только для равенства.

Для портов с тегами выпуска мы следуйте следующему соглашению:

  1. Если порт следует схеме, va.b.cмы удаляем ведущий v. В этом случае он становится a.b.c.
  2. Если порт содержит собственное имя в такой версии curl-7_65_1, мы удалим имя в начале: 7_65_1

Для портов последовательного выпуска мы используем дату, к которую вы обращаетесь фиксация, отформатированная как YYYY-MM-DD. Заявил другой способ: если у кого-то была машина времени и пошли на эту дату, они увидят эту фиксацию как последний мастер.

Например, если:

  1. Последняя фиксация была сделана 2019-04-19
  2. Текущая строка версии : 2019-02-14-1
  3. Сегодняшняя дата — 2019-06-01.

Затем, если вы обновляете исходную версию сегодня, вы должны дать ей версию 2019-06-01.

Версия порта

Версия порта.

Это поле является неотрицательное целое число. Он позволяет версии файла порта отдельно от версии базовой библиотеки; Если вы вносите изменения в порт, не изменяя базовую версию библиотеки, следует увеличить это поле на один (начиная 0с , что эквивалентно ни Port-Version одному полю). При обновлении версии базовой библиотеки это поле должно быть возвращено 0 (т. е. удалите Port-Version поле).

Примеры
Version: 1.0.5
Port-Version: 2
Version: 2019-03-21

Description

Описание библиотеки.

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

Примеры
Description: C++ header-only JSON library
Description: Mosquitto is an open source message broker that implements the MQ Telemetry Transport protocol versions 3.1 and 3.1.1.
  MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "machine
  to machine" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.

Главная страница

URL-адрес домашней страницы для библиотеки, где пользователь может найти дополнительную документацию или исходный исходный код.

Пример:

Homepage: https://github.com/Microsoft/vcpkg

Зависит от сборки

Разделенный запятыми список портов vcpkg, от библиотеки зависит.

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

Например: websocketpp — это только библиотека заголовков, поэтому не требуется никаких зависимостей во время установки. Тем не менее, нижестоящим пользователям требуется повышение и открытиеl, чтобы использовать библиотеку. Таким образом, websocketpp перечисляет повышение и открывается в качестве зависимостей.

Если порт зависит от дополнительных функций другой библиотеки, которые можно указать с помощью синтаксиса portname[featurelist] . Если порт не требует каких-либо функций из зависимости, это должно быть указано как portname[core].

Зависимости можно фильтровать на основе целевого триплета для поддержки различных требований. Эти фильтры используют тот же синтаксис, что и поле "Поддержка" ниже и окружены в скобках после имени порта и списка компонентов.

Пример
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)

Функции по умолчанию

Разделенный запятыми список необязательных функций порта для установки по умолчанию.

Это поле необязательно.

Пример
Default-Features: dynamodb, s3, kinesis

Поддерживает

Выражение, которое оценивается как true, если ожидается успешное построение порта для триплета.

В настоящее время это поле используется только в тестировании CI для пропуска портов. В будущем этот механизм предназначен для предупреждения пользователей о том, что заданное дерево установки не ожидается успешно. Таким образом, это поле следует использовать оптимистично; В случаях, когда ожидается, что порт будет выполнен на 10 % времени, он по-прежнему должен быть помечен как "поддерживаемый".

Сведения о поддерживаемых идентификаторах см. в vcpkg.json документации по манифесту.

Пример
Supports: !(uwp|arm)

Абзацы компонентов

В файлах CONTROL можно указать несколько необязательных функций. Он должен иметь Feature и Description поле. При необходимости он может иметь Build-Depends поле. Он должен быть отделен от других абзацев одним или несколькими пустыми строками.

Пример

Source: vtk
Version: 8.2.0-2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c

Feature: openvr
Description: OpenVR functionality for VTK
Build-Depends: sdl2, openvr

Feature: qt
Description: Qt functionality for VTK
Build-Depends: qt5

Feature: mpi
Description: MPI functionality for VTK
Build-Depends: mpi, hdf5[parallel]

Feature: python
Description: Python functionality for VTK
Build-Depends: python3

Распознанные поля

Функция

Имя функции.

Description

Описание функции с использованием того же синтаксиса, что и поле порта Description .

Зависит от сборки

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

При установке зависимости из всех выбранных компонентов объединяются для создания полного списка зависимостей для сборки. Это поле соответствует тому же синтаксису, что Build-Depends и в исходном абзаце.