Partager via


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

  1. Installation d’un port avec des fonctionnalités par défaut (comportement par défaut) : vcpkg install extract-any installe extract-any avec ses fonctionnalités par défaut (extract-any[format-a]), en raison de l’absence de demandes de fonctionnalités spécifiques.

  2. Spécification d’une fonctionnalité sans désactiver les valeurs par défaut : vcpkg install extract-any[format-b] conduit à l’installation avec extract-any les fonctionnalités spécifiées (format-b) et par défaut (extract-any[format-a,format-b]format-a).

  3. 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 exclut extract-any explicitement.

  4. Dépendances transitives et fonctionnalités par défaut : vcpkg install extract-any[format-b] portB peut entraîner extract-any[format-a,format-b] portB l’installation si portB elle dépend extract-any[format-a], mais ne désactive extract-anypas explicitement les fonctionnalités par défaut.

  5. 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 compris extract-anyles fonctionnalités par défaut, sauf exclusion explicite.

  6. Désactivation complète des fonctionnalités par défaut : vcpkg install extract-any[core] portB garantit qu’elle extract-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.