Overlaypoorten
Meestal worden vcpkg-poorten verkregen uit registers. Het is zeer waarschijnlijk dat de meeste poorten die u installeert afkomstig zijn van het officiële vcpkg-register op https://github.com/Microsoft/vcpkg. met vcpkg kunt u poorten installeren die voor u beschikbaar zijn via het bestandssysteem, we noemen deze poorten, overlaypoorten.
Een overlay-poort kan dienen als vervanging voor een bestaande poort, of als een nieuwe poort die anders niet beschikbaar is in een register. Bij het oplossen van pakketnamen, krijgen overlaypoorten voorrang.
Overlay-poorten worden in deze volgorde geëvalueerd:
- De map die is opgegeven in de opdrachtregel via
--overlay-ports
, of eventuele submappen, als die map geenCONTROL
- ofvcpkg.json
-bestand bevat. - De map die is opgegeven in een
vcpkg-configuration.json
-bestand viaoverlay-ports
of benoemde submappen als die map geenCONTROL
ofvcpkg.json
bestand heeft. - De map die is opgegeven door
VCPKG_OVERLAY_PORTS
vermeldingen van omgevingsvariabelen of benoemde submappen als die map geenCONTROL
ofvcpkg.json
bestand heeft.
Bij het omzetten van poortnamen wordt de eerste locatie met een overeenkomende overlaypoort geselecteerd.
Een overlaypoort gebruiken
Als er een overlaypoort is opgegeven, probeert vcpkg eerst die map als poort te laden. Als dat lukt, wordt de map zelf behandeld als een poort en wordt de naam van de overlay afgeleid van het CONTROL
- of vcpkg.json
-bestand. Anders worden submappen die de naam van de overlaypoort hebben overwogen.
Geldige poorten bevatten portfile.cmake
en óf vcpkg.json
óf CONTROL
.
Denk bijvoorbeeld aan de volgende mapstructuur:
-
x/vcpkg.json
wordt het veld"name"
ingesteld op"a"
. -
x/portfile.cmake
, de bijbehorende build-instructies voora
. - Het veld
"name"
inx/b/vcpkg.json
is ingesteld op"b"
. -
x/b/portfile.cmake
, de bijbehorende build-instructies voorb
. -
y/c/vcpkg.json
wordt het veld"name"
ingesteld op"c"
. -
y/c/portfile.cmake
, de bijbehorende build-instructies voorc
. -
y/d/vcpkg.json
wordt het veld"name"
ingesteld op"d"
. -
y/d/portfile.cmake
, de bijbehorende build-instructies voord
.
vcpkg houdt rekening met de volgende poorten met de volgende instellingen:
-
--overlay-ports=x
: er is één poort in deze overlay,a
. De naam is afgeleid vanvcpkg.json
. De submapb
wordt niet meegerekend. -
--overlay-ports=x/b
: er is één poort in deze overlay,b
. De naam is afgeleid vanvcpkg.json
. -
--overlay-ports=y
: er bevinden zich twee poorten in deze overlay,c
end
. Hun namen worden afgeleid van de submappen vany
en de namen die in hunvcpkg.json
zijn gedeclareerd, moeten overeenkomen, of er wordt een fout gegenereerd als vcpkg wordt gevraagdc
ofd
te overwegen.
U kunt op verschillende manieren toevoegen aan de configuratie van de overlaypoort:
- Opdrachtregel: voeg een of meer
--overlay-ports=<directory>
opties toe aan de opdrachtregel. -
manifest: vul de
"overlay-ports"
matrix invcpkg-configuration.json
. -
Omgevingsvariabele: stel
VCPKG_OVERLAY_PORTS
in op een door tekens gescheiden padlijst.
Voorbeeld: Overlay-poorten voorbeeld
Met de volgende mapstructuur:
Overlay-directory genaamd team-ports bevat de poorten sqlite3, rapidjson en curl. Overlay-map met de naam my-ports bevat poorten sqlite3 en rapidjson. De vcpkg-map bevat het standaardregister.
Rennen:
vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports
Installeren:
-
sqlite3
vanmy-ports
Rennen:
vcpkg install sqlite3 rapidjson curl \
--overlay-ports=my-ports/rapidjson \
--overlay-ports=vcpkg/ports/curl \
--overlay-ports=team-ports
Installeren:
-
sqlite3
vanteam-ports
-
rapidjson
vanmy-ports
-
curl
vanvcpkg/ports
Voorbeeld: Het gebruik van overlaypoorten om een afhankelijkheid van een systeem pakketbeheerder te gebruiken
Raadpleeg onze blogpostals u wilt kiezen voor een afhankelijkheid van een system package manager in plaats van een vcpkg-afhankelijkheid.