Trillizos
Triplet es un término estándar que se usa en la compilación cruzada como una manera de capturar completamente el entorno de destino (CPU, sistema operativo, compilador, tiempo de ejecución, etc.) en un único nombre conveniente.
En vcpkg, los tripletos describen un "conjunto de configuración de destino" imaginario para cada biblioteca. Dentro de un triplete, las bibliotecas generalmente se compilan con la misma configuración, pero no es un requisito. Por ejemplo, podría tener un triplete que se compila openssl
de forma estática y zlib
dinámica, uno que los compila estáticamente y otro que los compila dinámicamente (todos para el mismo sistema operativo de destino y la misma arquitectura).
Una sola compilación consumirá archivos de hasta dos tripletos: el triplete de destino y el triplete host. Si necesita aplicar diferentes configuraciones para distintas bibliotecas, debe crear un triplete personalizado único con esa combinación de configuración. Consulte personalización por puerto para obtener información sobre cómo hacerlo.
vcpkg incluye tripletas predefinidas para muchas plataformas y configuraciones comunes. Ejecute vcpkg help triplet
para obtener una lista de los tripletes disponibles en su entorno.
Selección triple
Para seleccionar un triplete de destino:
- En el modo clásico:
- Califica las referencias de paquete con el nombre de triplet, como
zlib:x64-windows-static-md
. - Deben superar
--triplet=<triplet>
.
- Califica las referencias de paquete con el nombre de triplet, como
- En CMake:
- Establezca
VCPKG_TARGET_TRIPLET
.
- Establezca
- En MSBuild:
- Establezca
VcpkgTriplet
.
- Establezca
Para seleccionar el triplete de host para la máquina actual:
- En el modo clásico:
- Deben superar
--host-triplet=<triplet>
.
- Deben superar
- En CMake:
- Establezca
VCPKG_HOST_TRIPLET
.
- Establezca
- En MSBuild:
- Establezca
VcpkgHostTriplet
.
- Establezca
Tripletos de la comunidad
Las tripletas contenidas en la triplets\community
carpeta no se prueban mediante la integración continua del registro mantenido, pero normalmente las solicita la comunidad. Dado que no tenemos cobertura continua, las actualizaciones de puertos pueden interrumpir la compatibilidad con los tripletes de la comunidad. Aceptamos y revisamos con gusto las contribuciones que pretenden resolver problemas con estos tripletes.
Al usar un triplete de la comunidad, se imprimirá un mensaje similar al siguiente durante una instalación del paquete:
-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: D:\src\vcpkg\triplets\community\x86-uwp.cmake
Agregar o reemplazar tripletas
Puede ampliar vcpkg reemplazando los tripletes en la caja o creando nuevos triples para su proyecto concreto.
En primer lugar, copie un archivo triplet integrado desde el triplets\
directorio en otra ubicación del sistema de archivos. A continuación, agregue ese directorio a la lista de rutas de acceso triplet superpuestas al interactuar con vcpkg.
- En el modo manifiesto, puede usar
$.vcpkg-configuration.overlay-triplets
. - Al usar vcpkg desde CMake, puede establecer
VCPKG_OVERLAY_TRIPLETS
. - Al usar vcpkg desde MSBuild, puede agregar
--overlay-triplets=...
a opciones adicionales de MSBuild. - Al usar la CLI directamente, puede pasar
--overlay-triplets=...
. - Puede establecer la
$VCPKG_OVERLAY_TRIPLETS
variable de entorno en una lista de rutas de acceso de superposición.
Consulte nuestro ejemplo de tripletas de superposición para obtener un tutorial más detallado.
Nota:
Los nombres triples solo pueden contener caracteres alfanuméricos en minúsculas y guiones.
Comentarios
El triple predeterminado al ejecutar cualquier comando vcpkg es %VCPKG_DEFAULT_TRIPLET%
o una opción específica de la plataforma si esa variable de entorno no está definida.
- Windows:
x64-windows
- Linux:
x64-linux
- OSX:
x64-osx
Se recomienda usar un esquema de nomenclatura sistemático al crear nuevos tripletes. El esquema de nomenclatura de cadenas de herramientas de Android es una buena fuente de inspiración: https://developer.android.com/ndk/guides/standalone_toolchain.html.