Концепция: функции по умолчанию

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

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

! [ПРИМЕЧАНИЕ] Не все порты содержат функции по умолчанию.

Роль функций по умолчанию

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

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

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

Отключение функций по умолчанию в режиме манифеста

Добавьте атрибут в "default-features": false объявление зависимостей, чтобы отключить установку компонентов по умолчанию.

Отключение автоматической установки компонентов по умолчанию возможно только для запрошенных пользователем зависимостей.

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

Отключение функций по умолчанию в классическом режиме

Добавьте специальную core функцию в составе запрошенных компонентов пакетов, которые требуется установить.

Примечание.

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

Пример 1. Включение библиотеки с функциями по умолчанию

{
  "name": "my-application",
  "version": "0.15.2",
  "dependencies": [
    "extract-any"
  ]
}

В этом сценарии extract-any устанавливается со своими функциями по умолчанию, обеспечивая немедленную функциональность.

Пример 2. Отключение функций по умолчанию (режим манифеста)

{
  "name": "my-application",
  "version": "0.15.2",
  "dependencies": [
    {
      "name": "extract-any",
      "default-features": false
    }
  ]
}

extract-any Здесь устанавливается без компонентов по умолчанию, что позволяет настроить настройку.

Пример 3. Отключение функций по умолчанию (классический режим)

vcpkg install extract-any[core]

extract-any Здесь устанавливается без компонентов по умолчанию с помощью специальной core функции.

Взаимодействие функций по умолчанию

  1. Установка порта с функциями по умолчанию (поведение по умолчанию):vcpkg install extract-any устанавливает extract-any с его компонентами по умолчанию (extract-any[format-a]), из-за отсутствия конкретных запросов на функции.

  2. Указание компонента без отключения значений по умолчанию: vcpkg install extract-any[format-b] приводит к установке extract-any как с указанными (format-b), так и с компонентами по умолчанию (format-aextract-any[format-a,format-b]).

  3. Явно отключая функции по умолчанию: vcpkg install extract-any[core] устанавливает extract-any без каких-либо компонентов по умолчанию, как [core] явно исключает их.

  4. Транзитивные зависимости и функции по умолчанию: vcpkg install extract-any[format-b] portB может привести к extract-any[format-a,format-b] portB установке, если portB это зависит extract-any[format-a], но не отключает extract-anyфункции по умолчанию.

  5. Объединение портов с различными спецификациями функций: vcpkg install extract-any[format-b] portB устанавливаетextract-any[format-a, format-b] portB, включая extract-anyфункции по умолчанию, если не было явно исключено.

  6. Комплексное отключение компонентов по умолчанию: vcpkg install extract-any[core] portB гарантирует, что extract-any он установлен только с явно запрошенными функциями, исключая значения по умолчанию.

Управление функциями по умолчанию

Для эффективного управления функциями по умолчанию в проектах:

  • Будьте явными. Укажите только необходимые функции. Используйте [core] для отключения функций по умолчанию при необходимости.
  • Проверьте зависимости. Используйте vcpkg depend-info <port> для понимания разрешений зависимостей и настройки конфигураций соответствующим образом.
  • Используйте переопределения и базовые показатели. Использование функций управления версиями и базовыми показателями для более эффективного управления разрешениями зависимостей.

Дополнительные сведения см. в следующих разделах:

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