Puertos de superposición

Normalmente, los puertos vcpkg se obtienen de los registros. Es muy probable que la mayoría de los puertos que instale procedan del registro oficial de vcpkg en https://github.com/Microsoft/vcpkg. vcpkg le permite instalar puertos disponibles a través del sistema de archivos, llamamos a estos puertos, puertos de superposición.

Un puerto de superposición puede actuar como reemplazo de un puerto existente o como puerto nuevo que, de lo contrario, no está disponible en un registro. Al resolver los nombres de paquete, los puertos de superposición tienen prioridad.

Los puertos de superposición se evalúan en el orden siguiente:

  • Ubicaciones de superposición especificadas en la línea de comandos a través --overlay-portsde .
  • Ubicaciones de superposición especificadas en un vcpkg-configuration.json archivo a través de overlay-ports.
  • Ubicaciones de superposición especificadas por la variable de VCPKG_OVERLAY_PORTS entorno.

Al resolver nombres de puerto, se selecciona la primera ubicación que contiene un puerto de superposición coincidente.

Uso de un puerto de superposición

Un directorio puede representar un conjunto de puertos de superposición y se puede especificar de una de estas dos maneras:

  • Puerto de superposición único: <directory>/sqlite3 hace referencia a un único puerto.
  • Directorio de puertos de superposición: <directory> hace referencia a un directorio de puertos Un puerto válido debe contener y vcpkg.json portfile.cmake.

Puede agregar un puerto de superposición de varias maneras:

  • Línea de comandos: agregue una o varias --overlay-ports=<directory> opciones al comando vcpkg.
  • Manifiesto: Rellenar la "overlay-ports" matriz en vcpkg-configuration.json
  • Variable de entorno: se establece VCPKG_OVERLAY_PORTS en una lista de rutas de acceso de directorio

Ejemplo: Ejemplo de puertos de superposición

Dada esta estructura de directorios:

Ejemplo con varios directorios de puertos de superposición

El directorio de superposición denominado team-ports contiene los puertos sqlite3, rapidjson y curl. El directorio de superposición denominado my-ports contiene los puertos sqlite3 y rapidjson. El directorio vcpkg contiene el registro predeterminado.

Ejecute:

vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports

Para instalarlo:

  • sqlite3 de my-ports

Ejecute:

vcpkg install sqlite3 rapidjson curl
    --overlay-ports=my-ports/rapidjson
    --overlay-ports=vcpkg/ports/curl
    --overlay-ports=team-ports

Para instalarlo:

  • sqlite3 de team-ports
  • rapidjson de my-ports
  • curl de "vcpkg/ports"

Ejemplo: Uso de puertos de superposición para usar una dependencia del administrador de paquetes del sistema

Para usar una dependencia del administrador de paquetes del sistema sobre una vcpkg, consulte nuestra entrada de blog.