Compartilhar via


Portas de sobreposição

Normalmente, as portas vcpkg são obtidas a partir de registros. É muito provável que a maioria das portas que você instala vêm do registro oficial vcpkg em https://github.com/Microsoft/vcpkg. vcpkg permite que você instale portas disponíveis para você através do sistema de arquivos, chamamos essas portas, portas de sobreposição.

Uma porta de sobreposição pode atuar como um substituto para uma porta existente ou como uma nova porta que, de outra forma, não está disponível em um registro. Ao resolver nomes de pacotes, as portas de sobreposição têm prioridade.

As portas de sobreposição são avaliadas na seguinte ordem:

  • Sobreponha locais especificados na linha de comando via --overlay-ports.
  • Sobreponha locais especificados em um vcpkg-configuration.json arquivo via overlay-ports.
  • Locais de sobreposição especificados pela VCPKG_OVERLAY_PORTS variável de ambiente.

Ao resolver nomes de porta, o primeiro local que contém uma porta de sobreposição correspondente é selecionado.

Usando uma porta de sobreposição

Um diretório pode representar um conjunto de portas de sobreposição e pode ser especificado de duas maneiras:

  • Porta de sobreposição única: <directory>/sqlite3 refere-se a uma única porta
  • Diretório de portas de sobreposição: <directory> refere-se a um diretório de portas Uma porta válida deve conter ambos vcpkg.json e portfile.cmake.

Você pode adicionar uma porta de sobreposição de várias maneiras:

  • Linha de comando: adicione uma ou várias --overlay-ports=<directory> opções ao comando vcpkg
  • Manifesto: Preencher a "overlay-ports" matriz em vcpkg-configuration.json
  • Variável de ambiente: definida VCPKG_OVERLAY_PORTS como uma lista de caminhos de diretório

Exemplo: Exemplo de portas de sobreposição

Dada esta estrutura de diretórios:

Exemplo com vários diretórios de porta de sobreposição

O diretório de sobreposição chamado team-ports contém as portas sqlite3, rapidjson e curl. O diretório de sobreposição chamado my-ports contém as portas sqlite3 e rapidjson. O diretório vcpkg contém o registro padrão.

Correr:

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

Para instalar:

  • sqlite3 de my-ports

Correr:

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

Para instalar:

  • sqlite3 de team-ports
  • rapidjson de my-ports
  • curl de 'vcpkg/ports

Exemplo: Usando portas de sobreposição para usar uma dependência do gerenciador de pacotes do sistema

Para usar uma dependência do gerenciador de pacotes do sistema sobre uma dependência vcpkg, consulte nossa postagem no blog.