Archivos CONTROL
Advertencia
CONTROL
los archivos están en desuso y solo se conservan para la compatibilidad con versiones anteriores de vcpkg. Use vcpkg.json archivos de manifiesto para cualquier puerto recién creado.
Use ./vcpkg format-manifest path/to/CONTROL
para convertir un archivo existente CONTROL
en un vcpkg.json
archivo.
El CONTROL
archivo contiene metadatos sobre el puerto. La sintaxis se basa en el formato Debiancontrol
, aunque solo se admite el subconjunto de campos documentados aquí.
Los nombres de campo distinguen mayúsculas de minúsculas e inician la línea sin espacios en blanco iniciales. Los párrafos están separados por una o varias líneas vacías.
Párrafo de origen
El primer párrafo de un CONTROL
archivo es el párrafo Origen. Debe tener un Source
campo , Version
y Description
. A continuación se documenta el conjunto completo de campos.
Ejemplos
Source: ace
Version: 6.5.5
Description: The ADAPTIVE Communication Environment
Source: vtk
Version: 8.2.0
Port-Version: 2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c
Campos reconocidos
Source
Nombre del puerto.
Al agregar puertos nuevos, tenga en cuenta que el nombre puede entrar en conflicto con otros proyectos que no forman parte de vcpkg. Por ejemplo json
, entra en conflicto con demasiados otros proyectos, por lo que debe agregar un ámbito al nombre como taocpp-json
para que sea único. Compruebe que no haya conflictos en un motor de búsqueda, así como en otras colecciones de paquetes.
Recopilaciones de paquetes para comprobar si hay conflictos:
Versión
La versión de la biblioteca.
Este campo es una cadena alfanumérica que también puede contener .
, _
o -
. No se realiza ningún intento de ordenar versiones; todas las versiones se tratan como cadenas de bits y solo se evalúan para la igualdad.
En el caso de los puertos de versión etiquetada, seguimos la convención siguiente:
- Si el puerto sigue un esquema como
va.b.c
, quitamos el valor inicialv
. En este caso, se convierte ena.b.c
. - Si el puerto incluye su propio nombre en la versión como
curl-7_65_1
, quitamos el nombre inicial:7_65_1
En el caso de los puertos de versión gradual, usamos la fecha de acceso a la confirmación por usted, con el formato YYYY-MM-DD
. Se indicó otra manera: si alguien tuviera una máquina de tiempo y pasara a esa fecha, vería esta confirmación como el maestro más reciente.
Por ejemplo, dado:
- La última confirmación se realizó el 2019-04-19
- La cadena de versión actual es
2019-02-14-1
- La fecha de hoy es 2019-06-01.
A continuación, si actualiza la versión de origen hoy, debe darle la versión 2019-06-01
.
Port-Version
Versión del puerto.
Este campo es un entero no negativo. Permite una versión del archivo de puerto por separado de la versión de la biblioteca subyacente; Si realiza un cambio en un puerto, sin cambiar la versión subyacente de la biblioteca, debe incrementar este campo por uno (a partir 0
de , que es equivalente a ningún Port-Version
campo). Cuando se actualiza la versión de la biblioteca subyacente, este campo se debe volver a 0
establecer en (es decir, eliminar el Port-Version
campo).
Ejemplos
Version: 1.0.5
Port-Version: 2
Version: 2019-03-21
Descripción
Descripción de la biblioteca.
Por convención, la primera línea de la descripción es un resumen de la biblioteca. A continuación se muestra una descripción detallada opcional. La descripción detallada puede ser varias líneas, empezando por espacios en blanco.
Ejemplos
Description: C++ header-only JSON library
Description: Mosquitto is an open source message broker that implements the MQ Telemetry Transport protocol versions 3.1 and 3.1.1.
MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "machine
to machine" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.
Página principal
Dirección URL de la página principal de la biblioteca donde un usuario puede encontrar documentación adicional o el código fuente original.
Ejemplo:
Homepage: https://github.com/Microsoft/vcpkg
Build-Depends
Lista separada por comas de puertos vcpkg en los que la biblioteca tiene una dependencia.
vcpkg no distingue entre las dependencias de solo compilación y las dependencias en tiempo de ejecución. Se debe especificar la lista completa de dependencias necesarias para usar correctamente la biblioteca.
Por ejemplo: websocketpp es una biblioteca de encabezado solo y, por tanto, no requiere ninguna dependencia en tiempo de instalación. Sin embargo, los usuarios de nivel inferior necesitan aumentar y abrirsl para usar la biblioteca. Por lo tanto, websocketpp enumera boost y openssl como dependencias.
Si el puerto depende de las características opcionales de otra biblioteca, se pueden especificar mediante la portname[featurelist]
sintaxis . Si el puerto no requiere ninguna característica de la dependencia, se debe especificar como portname[core]
.
Las dependencias se pueden filtrar en función del triplete de destino para admitir requisitos diferentes. Estos filtros usan la misma sintaxis que el campo Supports a continuación y están rodeados entre paréntesis después del nombre de puerto y la lista de características.
Ejemplo
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)
Características predeterminadas
Lista separada por comas de características de puerto opcionales que se van a instalar de forma predeterminada.
Este campo es opcional.
Ejemplo
Default-Features: dynamodb, s3, kinesis
Es compatible con
Expresión que se evalúa como true cuando se espera que el puerto se compile correctamente para un triplete.
Actualmente, este campo solo se usa en las pruebas de CI para omitir los puertos. En el futuro, este mecanismo está pensado para advertir a los usuarios con antelación de que no se espera que un árbol de instalación determinado se realice correctamente. Por lo tanto, este campo debe utilizarse optimistamente; en los casos en los que se espera que un puerto se realice correctamente el 10 % del tiempo, todavía debe marcarse como "compatible".
Consulte Expresiones de plataforma en la documentación del vcpkg.json
manifiesto para obtener la lista de identificadores admitidos.
Ejemplo
Supports: !(uwp|arm)
Párrafos de características
Se pueden especificar varias características opcionales en los CONTROL
archivos. Debe tener un campo Feature
y Description
. Opcionalmente, puede tener un Build-Depends
campo. Debe estar separado de otros párrafos por una o varias líneas vacías.
Ejemplo
Source: vtk
Version: 8.2.0-2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c
Feature: openvr
Description: OpenVR functionality for VTK
Build-Depends: sdl2, openvr
Feature: qt
Description: Qt functionality for VTK
Build-Depends: qt5
Feature: mpi
Description: MPI functionality for VTK
Build-Depends: mpi, hdf5[parallel]
Feature: python
Description: Python functionality for VTK
Build-Depends: python3
Campos reconocidos
Característica
Nombre de la característica.
Descripción
Descripción de la característica con la misma sintaxis que el campo de puerto Description
.
Build-Depends
Lista de dependencias necesarias para compilar y usar esta característica.
Al instalar las dependencias de todas las características seleccionadas se combinan para generar la lista de dependencias completa de la compilación. Este campo sigue la misma sintaxis que Build-Depends
en el párrafo de origen.