Ports de superposition
En règle générale, les ports vcpkg sont obtenus à partir de registres. Il est très probable que la plupart des ports que vous installez proviennent du registre vcpkg officiel à https://github.com/Microsoft/vcpkg. vcpkg vous permet d’installer des ports disponibles via le système de fichiers, nous appelons ces ports, ports de superposition.
Un port de superposition peut servir de remplacement de dépôt pour un port existant ou en tant que nouveau port qui n’est pas disponible dans un registre. Lors de la résolution des noms de package, les ports de superposition sont prioritaires.
Les ports de superposition sont évalués dans l’ordre suivant :
- Emplacements de superposition spécifiés dans la ligne de commande via
--overlay-ports
. - Emplacements de superposition spécifiés dans un
vcpkg-configuration.json
fichier viaoverlay-ports
. - Emplacements de superposition spécifiés par la variable d’environnement
VCPKG_OVERLAY_PORTS
.
Lors de la résolution des noms de ports, le premier emplacement qui contient un port de superposition correspondant est sélectionné.
Utilisation d’un port de superposition
Un répertoire peut représenter un ensemble de ports de superposition et peut être spécifié de deux façons :
- Port de superposition unique :
<directory>/sqlite3
fait référence à un seul port - Répertoire des ports de superposition :
<directory>
fait référence à un répertoire de ports valides qu’un port valide doit contenir à la foisvcpkg.json
etportfile.cmake
.
Vous pouvez ajouter un port de superposition de plusieurs façons :
- Ligne de commande : ajouter une ou plusieurs
--overlay-ports=<directory>
options à votre commande vcpkg - Manifeste : remplir le
"overlay-ports"
tableau dansvcpkg-configuration.json
- Variable environnementale : définie
VCPKG_OVERLAY_PORTS
sur une liste de chemins d’accès au répertoire
Exemple : Exemple de ports de superposition
Étant donné cette structure de répertoires :
Le répertoire de superposition nommé team-ports contient des ports sqlite3, rapidjson et curl. Le répertoire de superposition nommé my-ports contient des ports sqlite3 et rapidjson. Le répertoire vcpkg contient le registre par défaut.
Run :
vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports
Pour effectuer l’installation :
sqlite3
à partir demy-ports
Run :
vcpkg install sqlite3 rapidjson curl
--overlay-ports=my-ports/rapidjson
--overlay-ports=vcpkg/ports/curl
--overlay-ports=team-ports
Pour effectuer l’installation :
sqlite3
à partir deteam-ports
rapidjson
à partir demy-ports
curl
à partir de ' vcpkg/ports
Exemple : Utilisation de ports de superposition pour utiliser une dépendance du gestionnaire de package système
Pour utiliser une dépendance de gestionnaire de package système sur un vcpkg un, reportez-vous à notre billet de blog.