Číst v angličtině

Sdílet prostřednictvím


Překryvné porty

Porty vcpkg se obvykle získávají z registrů. Je velmi pravděpodobné, že většina portů, které instalujete, pochází z oficiálního registru vcpkg v https://github.com/Microsoft/vcpkg. Vcpkg vám umožňuje nainstalovat porty dostupné prostřednictvím systému souborů, nazýváme tyto porty, překryvné porty.

Překryvný port může fungovat jako výměna za existující port nebo jako nový port, který není v registru jinak dostupný. Při překladu názvů balíčků mají překryvné porty prioritu.

Překryvné porty se vyhodnocují v následujícím pořadí:

  • Adresář zadaný v příkazovém řádku prostřednictvím --overlay-portspojmenovaných podadresářů, pokud tento adresář neobsahuje žádný CONTROL nebo vcpkg.json soubor.
  • Adresář zadaný v vcpkg-configuration.json souboru prostřednictvím overlay-portspojmenovaných podadresářů, pokud tento adresář neobsahuje žádný CONTROL nebo vcpkg.json soubor.
  • Adresář určený položkami VCPKG_OVERLAY_PORTS proměnných prostředí nebo pojmenovanými podadresáři, pokud tento adresář neobsahuje žádný CONTROL nebo vcpkg.json soubor.

Při překladu názvů portů je vybráno první umístění, které obsahuje odpovídající překryvný port.

Použití překryvného portu

Pokud je zadaný překryvný port, nejprve se vcpkg pokusí načíst tento adresář jako port. Pokud se to podaří, samotný adresář se považuje za port a název překrytí je odvozený od CONTROL souboru nebo vcpkg.json souboru. V opačném případě se považují podadresáře s názvem překryvného portu.

Platné porty obsahují portfile.cmakea nebo vcpkg.json CONTROL.

Představte si například následující adresářovou strukturu:

  • x/vcpkg.json, pole "name" je nastaveno na "a"hodnotu .
  • x/portfile.cmake, přidružené pokyny k sestavení pro a.
  • x/b/vcpkg.json, pole "name" je nastaveno na "b"hodnotu .
  • x/b/portfile.cmake, přidružené pokyny k sestavení pro b.
  • y/c/vcpkg.json, pole "name" je nastaveno na "c"hodnotu .
  • y/c/portfile.cmake, přidružené pokyny k sestavení pro c.
  • y/d/vcpkg.json, pole "name" je nastaveno na "d"hodnotu .
  • y/d/portfile.cmake, přidružené pokyny k sestavení pro d.

Vcpkg bude zvažovat následující porty s následujícími nastaveními:

  • --overlay-ports=x: V tomto překryvu je jeden port. a Název je odvozen od vcpkg.json. Podadresář b se nepovažuje.
  • --overlay-ports=x/b: V tomto překryvu je jeden port. b Název je odvozen od vcpkg.json.
  • --overlay-ports=y: V tomto překryvu c jsou dva porty a d. Jejich názvy jsou odvozeny z podadresářů , ya názvy deklarované v jejich vcpkg.json musí odpovídat, nebo se vygeneruje chyba, pokud je vcpkg požádán o zvážení c nebo d.

Konfiguraci překryvného portu můžete přidat několika způsoby:

  • Příkazový řádek: Přidejte jednu nebo více --overlay-ports=<directory> možností do příkazového řádku.
  • Manifest: Naplňte "overlay-ports" pole v vcpkg-configuration.json.
  • Proměnná prostředí: Nastaví VCPKG_OVERLAY_PORTS se na seznam s oddělovači znaků cesty.

Příklad: Příklad překryvných portů

Vzhledem k této adresářové struktuře:

Příklad s více překryvnými adresáři portů

Překryvný adresář s názvem team-ports obsahuje porty sqlite3, rapidjson a curl. Překryvný adresář s názvem my-ports obsahuje porty sqlite3 a rapidjson. Adresář vcpkg obsahuje výchozí registr.

Run (Spuštění):

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

Instalace:

  • sqlite3 od my-ports

Run (Spuštění):

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

Instalace:

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

Příklad: Použití překryvných portů k použití závislosti správce systémových balíčků

Pokud chcete použít závislost správce systémových balíčků nad vcpkg, přečtěte si náš blogový příspěvek.