Fichiers CONTROL
Avertissement
CONTROL
les fichiers sont déconseillés et conservés uniquement pour la compatibilité descendante avec les versions antérieures de vcpkg. Utilisez vcpkg.json fichiers manifestes pour tout port nouvellement créé.
Permet ./vcpkg format-manifest path/to/CONTROL
de convertir un fichier existant CONTROL
en vcpkg.json
fichier.
Le CONTROL
fichier contient des métadonnées sur le port. La syntaxe est basée sur le format Debiancontrol
, bien que nous prenions uniquement en charge le sous-ensemble de champs documentés ici.
Les noms de champs respectent la casse et démarrent la ligne sans espace blanc de début. Les paragraphes sont séparés par une ou plusieurs lignes vides.
Paragraphe source
Le premier paragraphe d’un CONTROL
fichier est le paragraphe Source. Il doit avoir un champ Version
et Description
un Source
champ. L’ensemble complet de champs est documenté ci-dessous.
Exemples
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
Champs reconnus
Source
Nom du port.
Lorsque vous ajoutez de nouveaux ports, sachez que le nom peut entrer en conflit avec d’autres projets qui ne font pas partie de vcpkg. Par exemple, les conflits avec un trop grand nombre d’autres projets doivent vous permettre d’ajouter une étendue au nom, par taocpp-json
exemple json
pour le rendre unique. Vérifiez qu’il n’existe aucun conflit sur un moteur de recherche et sur d’autres collections de packages.
Regroupements de packages à case activée pour les conflits :
Version
Version de la bibliothèque.
Ce champ est une chaîne alphanumérique qui peut également contenir .
, _
ou -
. Aucune tentative de classement des versions n’est effectuée ; toutes les versions sont traitées comme des chaînes de bits et sont évaluées uniquement pour l’égalité.
Pour les ports de mise en production étiquetés, nous suivons la convention suivante :
- Si le port suit un schéma tel que
va.b.c
, nous supprimons le débutv
. Dans ce cas, il devienta.b.c
. - Si le port inclut son propre nom dans la version,
curl-7_65_1
nous supprimons le nom principal :7_65_1
Pour les ports de mise en production propagée, nous utilisons la date à laquelle la validation a été accessible par vous, mise en forme comme YYYY-MM-DD
. A déclaré une autre façon : si quelqu’un avait un ordinateur de temps et est allé à cette date, ils verraient cette validation comme le dernier maître.
Prenons l’exemple suivant :
- La dernière validation a été effectuée le 2019-04-19
- La chaîne de version actuelle est
2019-02-14-1
- La date d’aujourd’hui est 2019-06-01.
Ensuite, si vous mettez à jour la version source aujourd’hui, vous devez lui donner la version 2019-06-01
.
Version du port
Version du port.
Ce champ est un entier non négatif. Il permet de versionr le fichier de port séparément de la version de la bibliothèque sous-jacente ; si vous apportez une modification à un port, sans modifier la version sous-jacente de la bibliothèque, vous devez incrémenter ce champ par un (en commençant à 0
, ce qui équivaut à aucun Port-Version
champ). Lorsque la version de la bibliothèque sous-jacente est mise à niveau, ce champ doit être rétabli (c’est-à-dire 0
supprimer le Port-Version
champ).
Exemples
Version: 1.0.5
Port-Version: 2
Version: 2019-03-21
Description
Description de la bibliothèque.
Par convention, la première ligne de la description est un résumé de la bibliothèque. Une description détaillée facultative suit. La description détaillée peut être plusieurs lignes, tout en commençant par l’espace blanc.
Exemples
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.
Homepage
URL de la page d’accueil de la bibliothèque où un utilisateur peut trouver une documentation supplémentaire ou le code source d’origine.
Exemple :
Homepage: https://github.com/Microsoft/vcpkg
Build-Depends
Liste séparée par des virgules des ports vcpkg dont la bibliothèque a une dépendance.
vcpkg ne fait pas la distinction entre les dépendances de build uniquement et les dépendances d’exécution. La liste complète des dépendances nécessaires pour utiliser correctement la bibliothèque doit être spécifiée.
Par exemple : websocketpp est une bibliothèque d’en-tête uniquement, et ne nécessite donc aucune dépendance au moment de l’installation. Toutefois, les utilisateurs en aval ont besoin d’améliorer et d’ouvrir l’application pour utiliser la bibliothèque. Par conséquent, websocketpp liste boost et ouvre en tant que dépendances.
Si le port dépend des fonctionnalités facultatives d’une autre bibliothèque, celles-ci peuvent être spécifiées à l’aide de la portname[featurelist]
syntaxe. Si le port ne nécessite aucune fonctionnalité de la dépendance, cela doit être spécifié en tant que portname[core]
.
Les dépendances peuvent être filtrées en fonction du triplet cible pour prendre en charge différentes exigences. Ces filtres utilisent la même syntaxe que le champ Supports ci-dessous et sont entourés de parenthèses en suivant le nom de port et la liste des fonctionnalités.
Exemple
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)
Fonctionnalités par défaut
Liste séparée par des virgules des fonctionnalités de port facultatives à installer par défaut.
Ce champ est facultatif.
Exemple
Default-Features: dynamodb, s3, kinesis
Prise en charge
Expression qui prend la valeur true lorsque le port est censé être généré avec succès pour un triplet.
Actuellement, ce champ est utilisé uniquement dans le test CI pour ignorer les ports. À l’avenir, ce mécanisme vise à avertir les utilisateurs à l’avance qu’une arborescence d’installation donnée n’est pas censée réussir. Par conséquent, ce champ doit être utilisé de façon optimiste ; dans les cas où un port devrait réussir 10 % du temps, il doit toujours être marqué « pris en charge ».
Consultez les expressions de plateforme dans la vcpkg.json
documentation du manifeste pour obtenir la liste des identificateurs pris en charge.
Exemple
Supports: !(uwp|arm)
Paragraphes de caractéristiques
Plusieurs fonctionnalités facultatives peuvent être spécifiées dans les CONTROL
fichiers. Il doit avoir un champ et Description
un Feature
champ. Il peut éventuellement avoir un Build-Depends
champ. Elle doit être séparée d’autres paragraphes par une ou plusieurs lignes vides.
Exemple
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
Champs reconnus
Fonctionnalité
Nom de la fonctionnalité.
Description
Description de la fonctionnalité utilisant la même syntaxe que le champ de port Description
.
Build-Depends
Liste des dépendances requises pour générer et utiliser cette fonctionnalité.
Lors de l’installation, les dépendances de toutes les fonctionnalités sélectionnées sont combinées pour produire la liste complète des dépendances pour la build. Ce champ suit la même syntaxe que Build-Depends
dans le paragraphe source.