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-ports
o sottodirectory denominate se tale directory nonCONTROL
contiene file ovcpkg.json
. - Directory specificata in un
vcpkg-configuration.json
file tramiteoverlay-ports
o sottodirectory denominate se tale directory nonCONTROL
contiene file ovcpkg.json
. - Directory specificata dalle
VCPKG_OVERLAY_PORTS
voci delle variabili di ambiente o sottodirectory denominate se tale directory nonCONTROL
contiene file ovcpkg.json
.
Quando si risolve i nomi delle porte, viene selezionata la prima posizione contenente una porta di sovrapposizione corrispondente.
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.cmake
e 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 pera
.x/b/vcpkg.json
, il"name"
campo è impostato su"b"
.x/b/portfile.cmake
, le istruzioni di compilazione associate perb
.y/c/vcpkg.json
, il"name"
campo è impostato su"c"
.y/c/portfile.cmake
, le istruzioni di compilazione associate perc
.y/d/vcpkg.json
, il"name"
campo è impostato su"d"
.y/d/portfile.cmake
, le istruzioni di compilazione associate perd
.
vcpkg considererà le porte seguenti in base alle impostazioni seguenti:
--overlay-ports=x
: è presente una porta in questa sovrimpressione,a
. Il nome è derivato davcpkg.json
. La sottodirectoryb
non viene considerata.--overlay-ports=x/b
: è presente una porta in questa sovrimpressione,b
. Il nome è derivato davcpkg.json
.--overlay-ports=y
: in questa sovrimpressione sono presenti due porte ec
d
. I nomi sono derivati dalle sottodirectory diy
e i nomi dichiarati nei rispettivivcpkg.json
devono corrispondere oppure verrà generato un errore se viene chiesto a vcpkg di prendere in considerazionec
od
.
È 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 invcpkg-configuration.json
. - Variabile ambientale: impostare su
VCPKG_OVERLAY_PORTS
un elenco delimitato da un percorso.
Data questa struttura di directory:
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
damy-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
dateam-ports
rapidjson
damy-ports
curl
davcpkg/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.
Feedback su vcpkg
vcpkg è un progetto di open source. Selezionare un collegamento per fornire feedback: