Leggere in inglese

Condividi tramite


Porte sovrapposte

In genere, le porte vcpkg vengono ottenute dai registri. È molto probabile che la maggior parte delle porte installate provengano dal registro vcpkg ufficiale in https://github.com/Microsoft/vcpkg. vcpkg consente di installare le porte disponibili tramite il file system, queste porte vengono chiamate porte sovrapposte.

Una porta di sovrimpressione può fungere da sostituzione di una porta esistente o come nuova porta altrimenti non disponibile in un Registro di sistema. Durante la risoluzione dei nomi dei pacchetti, le porte di sovrimpressione hanno priorità.

Le porte di sovrapposizione vengono valutate nell'ordine seguente:

  • Directory specificata nella riga di comando tramite --overlay-portso sottodirectory denominate se tale directory non CONTROL contiene file o vcpkg.json .
  • Directory specificata in un vcpkg-configuration.json file tramite overlay-portso sottodirectory denominate se tale directory non CONTROL contiene file o vcpkg.json .
  • Directory specificata dalle VCPKG_OVERLAY_PORTS voci delle variabili di ambiente o sottodirectory denominate se tale directory non CONTROL contiene file o vcpkg.json .

Quando si risolve i nomi delle porte, viene selezionata la prima posizione contenente una porta di sovrapposizione corrispondente.

Uso di una porta di sovrapposizione

Se viene specificata una porta di sovrapposizione, prima di tutto vcpkg tenta di caricare tale directory come porta. Se l'operazione ha esito positivo, la directory stessa viene considerata come una porta e il nome della sovrimpressione deriva dal CONTROL file o vcpkg.json . In caso contrario, le sottodirectory con il nome della porta di sovrimpressione vengono considerate.

Le porte valide contengono portfile.cmakee vcpkg.json o CONTROL.

Si consideri ad esempio la struttura di directory seguente:

  • x/vcpkg.json, il "name" campo è impostato su "a".
  • x/portfile.cmake, le istruzioni di compilazione associate per a.
  • x/b/vcpkg.json, il "name" campo è impostato su "b".
  • x/b/portfile.cmake, le istruzioni di compilazione associate per b.
  • y/c/vcpkg.json, il "name" campo è impostato su "c".
  • y/c/portfile.cmake, le istruzioni di compilazione associate per c.
  • y/d/vcpkg.json, il "name" campo è impostato su "d".
  • y/d/portfile.cmake, le istruzioni di compilazione associate per d.

vcpkg considererà le porte seguenti in base alle impostazioni seguenti:

  • --overlay-ports=x: è presente una porta in questa sovrimpressione, a. Il nome è derivato da vcpkg.json. La sottodirectory b non viene considerata.
  • --overlay-ports=x/b: è presente una porta in questa sovrimpressione, b. Il nome è derivato da vcpkg.json.
  • --overlay-ports=y: in questa sovrimpressione sono presenti due porte e c d. I nomi sono derivati dalle sottodirectory di ye i nomi dichiarati nei rispettivi vcpkg.json devono corrispondere oppure verrà generato un errore se viene chiesto a vcpkg di prendere in considerazione c o d.

È possibile aggiungere alla configurazione della porta di sovrimpressione in diversi modi:

  • Riga di comando: aggiungere una o più --overlay-ports=<directory> opzioni alla riga di comando.
  • Manifesto: popola la "overlay-ports" matrice in vcpkg-configuration.json.
  • Variabile ambientale: impostare su VCPKG_OVERLAY_PORTS un elenco delimitato da un percorso.

Esempio: Esempio di porte di sovrapposizione

Data questa struttura di directory:

Esempio con più directory di porte sovrapposte

La directory overlay denominata team-ports contiene le porte sqlite3, rapidjson e curl. La directory overlay denominata my-ports contiene le porte sqlite3 e rapidjson. La directory vcpkg contiene il Registro di sistema predefinito.

Terza fase

vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports

Per effettuare l'installazione:

  • sqlite3 da my-ports

Terza fase

vcpkg install sqlite3 rapidjson curl
    --overlay-ports=my-ports/rapidjson
    --overlay-ports=vcpkg/ports/curl
    --overlay-ports=team-ports

Per effettuare l'installazione:

  • sqlite3 da team-ports
  • rapidjson da my-ports
  • curl da vcpkg/ports

Esempio: uso delle porte di sovrimpressione per usare una dipendenza di Gestione pacchetti di sistema

Per usare una dipendenza di System Package Manager su un vcpkg one, fare riferimento al post di blog.