Concept : fonctionnalités par défaut
Cet article décrit le concept des fonctionnalités par défaut, leurs implications et leurs stratégies de gestion efficace.
Les fonctionnalités par défaut sont un ensemble de fonctionnalités automatiquement incluses lorsqu’un port est installé, sauf si elle est désactivée explicitement. Ces fonctionnalités garantissent qu’une bibliothèque conserve un niveau de base de fonctionnalités, même si la complexité de son graphe des dépendances augmente.
Remarque
Tous les ports ne contiennent pas de fonctionnalités par défaut.
Rôle des fonctionnalités par défaut
Les fonctionnalités par défaut offrent une expérience conviviale en garantissant que les fonctionnalités essentielles sont disponibles dans les bibliothèques avec des fonctionnalités modulaires.
Par exemple, une bibliothèque capable d’extraire différents formats d’archive peut avoir chaque format comme fonctionnalité facultative. Sans fonctionnalités par défaut, la bibliothèque peut ne pas inclure d’algorithme d’extraction prête à l’emploi, ce qui complique l’utilisation initiale.
Les packages installés par vcpkg incluent toujours leurs fonctionnalités par défaut, sauf demande explicite. Ce comportement s’applique aux packages requis directement par l’utilisateur via un fichier manifeste ou un appel d’installation vcpkg et aux packages requis en tant que dépendances.
Désactivation des fonctionnalités par défaut en mode manifeste
Ajoutez l’attribut à une déclaration de dépendance pour désactiver l’installation "default-features": false
de ses fonctionnalités par défaut.
La désactivation de l’installation automatique des fonctionnalités par défaut n’est possible que pour les dépendances demandées par l’utilisateur.
Si vous souhaitez désactiver les fonctionnalités par défaut d’une dépendance transitive, vous devez la promouvoir vers une dépendance directe sur le manifeste de votre projet.
Désactivation des fonctionnalités par défaut en mode classique
Ajoutez la fonctionnalité spéciale core
dans le cadre des fonctionnalités demandées des packages que vous souhaitez installer.
Remarque
Comme pour le fonctionnement du mode manifeste, si vous souhaitez désactiver les fonctionnalités par défaut d’une dépendance transitive ; vous devez la promouvoir vers une demande d’installation directe dans votre ligne de commande.
Exemple 1 : Inclusion d’une bibliothèque avec des fonctionnalités par défaut
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
"extract-any"
]
}
Dans ce scénario, extract-any
est installé avec ses fonctionnalités par défaut, ce qui garantit des fonctionnalités immédiates.
Exemple 2 : Désactivation des fonctionnalités par défaut (mode manifeste)
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
{
"name": "extract-any",
"default-features": false
}
]
}
Ici, extract-any
il est installé sans ses fonctionnalités par défaut, ce qui permet une configuration personnalisée.
Exemple 3 : Désactivation des fonctionnalités par défaut (mode classique)
vcpkg install extract-any[core]
Ici, extract-any
il est installé sans ses fonctionnalités par défaut à l’aide de la fonctionnalité spéciale core
.
Interactions par défaut avec les fonctionnalités
Installation d’un port avec des fonctionnalités par défaut (comportement par défaut) :
vcpkg install extract-any
installeextract-any
avec ses fonctionnalités par défaut (extract-any[format-a]
), en raison de l’absence de demandes de fonctionnalités spécifiques.Spécification d’une fonctionnalité sans désactiver les valeurs par défaut :
vcpkg install extract-any[format-b]
conduit à l’installation avecextract-any
les fonctionnalités spécifiées (format-b
) et par défaut (extract-any[format-a,format-b]
format-a
).Désactivation explicite des fonctionnalités par défaut :
vcpkg install extract-any[core]
installe sans fonctionnalités par défaut, car[core]
elle les exclutextract-any
explicitement.Dépendances transitives et fonctionnalités par défaut :
vcpkg install extract-any[format-b] portB
peut entraînerextract-any[format-a,format-b] portB
l’installation siportB
elle dépendextract-any[format-a]
, mais ne désactiveextract-any
pas explicitement les fonctionnalités par défaut.Combinaison de ports avec des spécifications de fonctionnalités variées
extract-any[format-a, format-b] portB
:vcpkg install extract-any[format-b] portB
installe, y comprisextract-any
les fonctionnalités par défaut, sauf exclusion explicite.Désactivation complète des fonctionnalités par défaut :
vcpkg install extract-any[core] portB
garantit qu’elleextract-any
est installée uniquement avec les fonctionnalités demandées explicitement, à l’exclusion des valeurs par défaut.
Gestion des fonctionnalités par défaut
Pour gérer efficacement les fonctionnalités par défaut dans vos projets :
- Soyez explicite : spécifiez uniquement les fonctionnalités dont vous avez besoin. Permet
[core]
de désactiver les fonctionnalités par défaut si nécessaire. - Inspecter les dépendances : permet
vcpkg depend-info <port>
de comprendre les résolutions de dépendances et d’ajuster vos configurations en conséquence. - Utiliser les remplacements et les bases de référence : tirez parti des fonctionnalités de contrôle de version et de base pour mieux contrôler les résolutions de dépendances.
Pour plus d’informations, consultez les rubriques suivantes :
L’adoption d’une stratégie claire pour la gestion des fonctionnalités par défaut permet de simplifier la gestion des dépendances de votre projet, en vous assurant d’inclure uniquement les éléments nécessaires aux fonctionnalités de votre application.