Концепция: функции по умолчанию
В этой статье описывается концепция функций по умолчанию, их последствия и стратегии эффективного управления.
Функции по умолчанию — это набор функций, автоматически включенных при установке порта, если только явно не отключен. Эти функции гарантируют, что библиотека поддерживает базовый уровень функциональности, даже если сложность ее граф зависимостей увеличивается.
Примечание
Не все порты содержат функции по умолчанию.
Функции по умолчанию предоставляют удобный интерфейс, гарантируя, что основные функциональные возможности доступны в библиотеках с модульными функциями.
Например, библиотека, способная извлекать различные форматы архива, может иметь каждый формат в качестве необязательной функции. Без функций по умолчанию библиотека может не включать алгоритм извлечения из поля, усложняя начальное использование.
Пакеты, установленные vcpkg, всегда будут включать их функции по умолчанию, если в противном случае явно не запрашивается. Это поведение применяется к пакетам, необходимым непосредственно пользователю через файл манифеста или вызов установки vcpkg, а также к пакетам, необходимым в качестве зависимостей.
Добавьте атрибут в "default-features": false
объявление зависимостей, чтобы отключить установку компонентов по умолчанию.
Отключение автоматической установки компонентов по умолчанию возможно только для запрошенных пользователем зависимостей.
Если вы хотите отключить функции по умолчанию для транзитивной зависимости, необходимо повысить его до прямой зависимости от манифеста проекта.
Добавьте специальную core
функцию в составе запрошенных компонентов пакетов, которые требуется установить.
Примечание
Аналогично тому, как работает режим манифеста, если вы хотите отключить функции по умолчанию для транзитивной зависимости; Его необходимо повысить до прямого запроса на установку в командной строке.
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
"extract-any"
]
}
В этом сценарии extract-any
устанавливается со своими функциями по умолчанию, обеспечивая немедленную функциональность.
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
{
"name": "extract-any",
"default-features": false
}
]
}
extract-any
Здесь устанавливается без компонентов по умолчанию, что позволяет настроить настройку.
vcpkg install extract-any[core]
extract-any
Здесь устанавливается без компонентов по умолчанию с помощью специальной core
функции.
Установка порта с функциями по умолчанию (поведение по умолчанию):
vcpkg install extract-any
устанавливаетextract-any
с его компонентами по умолчанию (extract-any[format-a]
), из-за отсутствия конкретных запросов на функции.Указание компонента без отключения значений по умолчанию:
vcpkg install extract-any[format-b]
приводит к установкеextract-any
как с указанными (format-b
), так и с компонентами по умолчанию (format-a
extract-any[format-a,format-b]
).Явно отключая функции по умолчанию:
vcpkg install extract-any[core]
устанавливаетextract-any
без каких-либо компонентов по умолчанию, как[core]
явно исключает их.Транзитивные зависимости и функции по умолчанию:
vcpkg install extract-any[format-b] portB
может привести кextract-any[format-a,format-b] portB
установке, еслиportB
это зависитextract-any[format-a]
, но не отключаетextract-any
функции по умолчанию.Объединение портов с различными спецификациями функций:
vcpkg install extract-any[format-b] portB
устанавливаетextract-any[format-a, format-b] portB
, включаяextract-any
функции по умолчанию, если не было явно исключено.Комплексное отключение компонентов по умолчанию:
vcpkg install extract-any[core] portB
гарантирует, чтоextract-any
он установлен только с явно запрошенными функциями, исключая значения по умолчанию.
Для эффективного управления функциями по умолчанию в проектах:
- Будьте явными. Укажите только необходимые функции. Используйте
[core]
для отключения функций по умолчанию при необходимости. - Проверьте зависимости. Используйте
vcpkg depend-info <port>
для понимания разрешений зависимостей и настройки конфигураций соответствующим образом. - Используйте переопределения и базовые показатели. Использование функций управления версиями и базовыми показателями для более эффективного управления разрешениями зависимостей.
Дополнительные сведения см. в следующих разделах:
Внедрение четкой стратегии управления функциями по умолчанию поможет упростить управление зависимостями проекта, обеспечивая включение только необходимых функций приложения.
Отзыв о vcpkg
vcpkg — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: