Concepto: características predeterminadas

En este artículo se describe el concepto de características predeterminadas, sus implicaciones y estrategias para una administración eficaz.

Las características predeterminadas son un conjunto de características que se incluyen automáticamente cuando se instala un puerto, a menos que se deshabilite explícitamente. Estas características garantizan que una biblioteca mantenga un nivel de base de funcionalidad, incluso a medida que aumenta la complejidad de su grafo de dependencias.

Nota:

No todos los puertos contienen características predeterminadas.

Rol de características predeterminadas

Las características predeterminadas proporcionan una experiencia fácil de usar asegurándose de que las funcionalidades esenciales están disponibles en bibliotecas con características modulares.

Por ejemplo, una biblioteca capaz de extraer varios formatos de archivo podría tener cada formato como una característica opcional. Sin características predeterminadas, es posible que la biblioteca no incluya ningún algoritmo de extracción de fábrica, lo que complica el uso inicial.

Los paquetes instalados por vcpkg siempre incluirán sus características predeterminadas, a menos que se solicite explícitamente lo contrario. Este comportamiento se aplica a los paquetes requeridos directamente por el usuario a través de un archivo de manifiesto o la invocación de instalación de vcpkg, y a los paquetes necesarios como dependencias.

Deshabilitación de las características predeterminadas en el modo de manifiesto

Agregue el atributo a una declaración de dependencia para deshabilitar la "default-features": false instalación de sus características predeterminadas.

Deshabilitar la instalación automática de características predeterminadas solo es posible para las dependencias solicitadas por el usuario.

Si desea deshabilitar las características predeterminadas para una dependencia transitiva, debe promoverla a una dependencia directa en el manifiesto del proyecto.

Deshabilitación de las características predeterminadas en modo clásico

Agregue la característica especial core como parte de las características solicitadas de los paquetes que desea instalar.

Nota:

De forma similar a cómo funciona el modo de manifiesto, si desea deshabilitar las características predeterminadas para una dependencia transitiva; Debe promoverlo a una solicitud de instalación directa en la línea de comandos.

Ejemplo 1: Incluir una biblioteca con características predeterminadas

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

En este escenario, extract-any se instala con sus características predeterminadas, lo que garantiza la funcionalidad inmediata.

Ejemplo 2: Deshabilitar características predeterminadas (modo de manifiesto)

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

Aquí, extract-any se instala sin sus características predeterminadas, lo que permite una configuración personalizada.

Ejemplo 3: Deshabilitación de características predeterminadas (modo clásico)

vcpkg install extract-any[core]

Aquí, extract-any se instala sin sus características predeterminadas mediante la característica especial core .

Interacciones de características predeterminadas

  1. Instalación de un puerto con características predeterminadas (comportamiento predeterminado):vcpkg install extract-any se instala con sus características predeterminadas extract-any (extract-any[format-a]), debido a la ausencia de solicitudes de características específicas.

  2. Especificar una característica sin deshabilitar los valores predeterminados: conduce a la instalación de extract-any con las características especificadas (format-b) y predeterminadas (format-aextract-any[format-a,format-b]). vcpkg install extract-any[format-b]

  3. Deshabilitar explícitamente las características predeterminadas: vcpkg install extract-any[core] se extract-any instala sin ninguna característica predeterminada, ya [core] que las excluye explícitamente.

  4. Dependencias transitivas y características predeterminadas: vcpkg install extract-any[format-b] portB puede dar lugar a extract-any[format-a,format-b] portB que se instale si portB depende de extract-any[format-a], pero no deshabilita extract-anyexplícitamente las características predeterminadas.

  5. Combinar puertos con especificaciones de características variadas: vcpkg install extract-any[format-b] portB instala , incluidas extract-anylas características predeterminadasextract-any[format-a, format-b] portB, a menos que se excluya explícitamente.

  6. Deshabilitación completa de las características predeterminadas: vcpkg install extract-any[core] portB garantiza que extract-any se instala solo con las características solicitadas explícitamente, excepto los valores predeterminados.

Administración de características predeterminadas

Para administrar eficazmente las características predeterminadas dentro de los proyectos:

  • Ser explícito: especifique solo las características que necesita. Use [core] para deshabilitar las características predeterminadas cuando sea necesario.
  • Inspeccionar dependencias: use vcpkg depend-info <port> para comprender las resoluciones de dependencia y ajustar las configuraciones en consecuencia.
  • Usar invalidaciones y líneas base: aproveche las características de control de versiones y línea de base para tener más control sobre las resoluciones de dependencia.

Para obtener más información, vea lo siguiente:

La adopción de una estrategia clara para administrar las características predeterminadas ayudará a simplificar la administración de dependencias del proyecto, lo que garantiza incluir solo lo necesario para la funcionalidad de la aplicación.