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 via overlay-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 fois vcpkg.json et portfile.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 dans vcpkg-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 :

Exemple avec plusieurs répertoires de ports de superposition

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 de my-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 de team-ports
  • rapidjson à partir de my-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.