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


Концепция: порты

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

  • Метаданные о пакете: имя, версия, поддерживаемые функции, зависимости и т. д.
  • Инструкции по получению, сборке и установке пакета.

Кроме того, порты могут включать:

  • Исправления для применения к исходному коду пакета
  • Инструкции по интеграции с системой сборки проекта

Portfile (portfile.cmake)

Все порты должны содержать портфайл (файл с именем portfile.cmake). Portfile — это скрипт, содержащий инструкции по сборке и установке пакета в среде vcpkg. Ниже приведены некоторые распространенные задачи, выполняемые портфайлами:

  • Скачайте исходный код пакета.
  • Создайте пакет с помощью системы сборки вышестоящий.
  • Скопируйте выходные данные сборки в дерево установки vcpkg.
  • Установите файлы интеграции со сборкой.

vcpkg.json

В vcpkg.json файле описываются метаданные пакета, содержащегося в порту vcpkg. Этот файл определяет атрибуты, такие как имя пакета, версия, описание, зависимости, поддерживаемые функции и платформы и т. д. Дополнительные сведения см. в справочнике по файлу vcpkg.json .

ФАЙЛЫ CONTROL

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

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

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

Исправления файлов

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

Категории портов

Категории портов — это коллоквиальные термины, которые поддерживают, используемые для создания ролей, разными портами в vcpkg. Хотя эти категории помогают описать общие функциональные возможности, стоит отметить, что любой указанный порт может принадлежать нескольким категориям или, возможно, нет вообще, на основе его функций и вариантов использования.

Стандартный порт

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

Метапорт

Метапорт служит для наложения ограничений на граф установки без наличия собственных файлов сборки. Эти порты часто используются для группировки набора связанных библиотек под одним именем или служить слоем косвенного обращения для заменяемых компонентов. Например, boost это метапорт, который группирует различные библиотеки Boost под одним именем для упрощения управления зависимостями.

Порт скрипта

Порт скрипта содержит скрипты служебной программы, которые в основном предназначены для внутренних задач в vcpkg или для использования другими портами. Эти порты позволяют управлять версиями скриптов служебной программы, тем самым поддерживая совместимость и стандартизацию. Например, vcpkg-cmake это порт скрипта, предоставляющий вспомогательные vcpkg_cmake_configure() функции.

Следующие шаги

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