Dela via


Överläggsportar

Vanligtvis hämtas vcpkg-portar från register. Det är mycket troligt att de flesta av de portar du installerar kommer från det officiella vcpkg-registret på https://github.com/Microsoft/vcpkg. Med vcpkg kan du installera portar som är tillgängliga för dig via filsystemet, vi anropar dessa portar, överläggsportar.

En överläggsport kan fungera som en direkt ersättning för en befintlig port eller som en ny port som inte annars är tillgänglig i ett -registersystem. Även om att matcha paketnamnprioriteras överläggsportar.

Överläggsportar utvärderas i följande ordning:

  • Katalogen som anges på kommandoraden via --overlay-portseller namngivna underkataloger om katalogen inte har någon CONTROL eller vcpkg.json fil.
  • Katalogen som anges i en vcpkg-configuration.json fil via overlay-portseller namngivna underkataloger om katalogen inte har någon CONTROL eller vcpkg.json fil.
  • Katalogen som anges av VCPKG_OVERLAY_PORTS miljövariabelposter eller namngivna underkataloger om katalogen inte har någon CONTROL eller vcpkg.json fil.

När du löser portnamn väljs den första platsen som innehåller en matchande överläggsport.

Använda en överläggsport

Om en överläggsport anges försöker vcpkg först läsa in katalogen som en port. Om det lyckas behandlas själva katalogen som en port och namnet på överlägget härleds från filen CONTROL eller vcpkg.json. Annars beaktas underkataloger med överläggsportnamnet.

Giltiga portar innehåller portfile.cmakeoch antingen vcpkg.json eller CONTROL.

Tänk till exempel på följande katalogstruktur:

  • x/vcpkg.json, fältet "name" är inställt på "a".
  • x/portfile.cmake, de associerade bygginstruktionerna för a.
  • x/b/vcpkg.json, "name"-fältet är inställt på "b".
  • x/b/portfile.cmake, de associerade bygginstruktionerna för b.
  • y/c/vcpkg.jsonär fältet "name" inställt på "c".
  • y/c/portfile.cmake, de associerade bygginstruktionerna för c.
  • y/d/vcpkg.jsonär fältet "name" inställt på "d".
  • y/d/portfile.cmake, de associerade bygginstruktionerna för d.

vcpkg tar hänsyn till följande portar med följande inställningar:

  • --overlay-ports=x: Det finns en port i det här överlägget, a. Namnet härleds från vcpkg.json. Underkatalogen b beaktas inte.
  • --overlay-ports=x/b: Det finns en port i det här överlägget, b. Namnet härleds från vcpkg.json.
  • --overlay-ports=y: Det finns två portar i det här överlägget, c och d. Deras namn härleds från underkatalogerna för yoch namnen som deklareras i deras vcpkg.json måste matcha, annars genereras ett fel om vcpkg uppmanas att överväga c eller d.

Du kan lägga till portkonfigurationen för överlägg på flera sätt:

  • Kommandorad: Lägg till ett eller flera --overlay-ports=<directory> alternativ på kommandoraden.
  • Manifest: Fyll i "overlay-ports"-arrayen i vcpkg-configuration.json.
  • Miljövariabel: Ange VCPKG_OVERLAY_PORTS till en sökvägsavgränsad lista.

Exempel: Exempel på överläggsportar

Med tanke på den här katalogstrukturen:

Exempel med flera portkataloger för överlägg

Överläggskatalogen med namnet teamportar innehåller portarna sqlite3, rapidjson och curl. Överläggskatalogen med namnet my-ports innehåller portarna sqlite3 och rapidjson. Katalogen vcpkg innehåller standardregistret.

Springa:

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

Så här installerar du:

  • sqlite3 från my-ports

Springa:

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

Så här installerar du:

  • sqlite3 från team-ports
  • rapidjson från my-ports
  • curl från vcpkg/ports

Exempel: Använda överläggsportar för att använda ett systempakethanterarberoende

Om du vill använda ett beroende från systemets pakethanterare istället för ett vcpkg-beroende kan du läsa vårt blogginlägg.