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 viaoverlay-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 ambosvcpkg.json
eportfile.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 emvcpkg-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:
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
demy-ports
Correr:
vcpkg install sqlite3 rapidjson curl
--overlay-ports=my-ports/rapidjson
--overlay-ports=vcpkg/ports/curl
--overlay-ports=team-ports
Para instalar:
sqlite3
deteam-ports
rapidjson
demy-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.