Conceito: Portos
Uma porta em vcpkg é uma receita versionada que produz um conjunto de arquivos. A execução de uma porta afeta o gráfico de instalação produzindo novos arquivos binários ou de cabeçalho. As portas podem ter dependências de outras portas e podem exigir dependências adicionais quando determinados recursos estão habilitados. Essas dependências devem ser refletidas nos metadados de portas. No mínimo, uma porta contém:
- Metadados sobre o pacote: nome, versão, recursos suportados, dependências, etc.
- Instruções para adquirir, compilar, se necessário, e instalar o pacote.
Além disso, as portas podem incluir:
- Patches a serem aplicados ao código-fonte do pacote
- Instruções para integração com o sistema de compilação do seu projeto
Portfile (portfile.cmake
)
Todas as portas devem conter um portfile (um arquivo chamado portfile.cmake
). Um portfile é um script que contém instruções sobre como criar e instalar um pacote dentro do ambiente vcpkg. Algumas tarefas comuns executadas por portfiles são:
- Faça o download do código-fonte de um pacote.
- Crie o pacote usando o sistema de compilação upstream.
- Copie a saída da compilação para a árvore de instalação vcpkg.
- Instale os arquivos de integração do sistema de compilação.
vcpkg.json
O vcpkg.json
arquivo descreve metadados sobre o pacote contido na porta vcpkg. Esse arquivo define atributos como o nome do pacote, versão, descrição, dependências, recursos e plataformas suportados, etc. Consulte a referência do vcpkg.json
arquivo para saber mais.
Arquivos CONTROL
Aviso
CONTROL
os arquivos são preteridos e mantidos apenas para compatibilidade com versões anteriores.
CONTROL
Os arquivos no VCPKG servem como arquivos de metadados que especificam detalhes sobre um pacote, ou "porta", que o VCPKG pode instalar. Esses arquivos foram preteridos e foram substituídos por vcpkg.json
arquivos de manifesto para novas portas. No entanto, eles são mantidos para compatibilidade com versões anteriores. Consulte arquivos de controle para obter mais informações.
Arquivos de patch
Em determinados cenários, uma porta pode incluir arquivos de patch. Esses arquivos carregam modificações no código-fonte da biblioteca, que são essenciais para corrigir problemas existentes ou para manter a compatibilidade com outros componentes. Antes do início do processo de compilação, os patches são aplicados como parte das etapas executadas pelo portfile, facilitando a integração perfeita e sem erros da biblioteca. Consulte o guia do mantenedor para saber mais.
Categorias de portas
Categorias de porta são termos coloquiais que os mantenedores usam para articular as funções que diferentes portas desempenham dentro do vcpkg. Embora essas categorias ajudem a descrever funcionalidades gerais, vale a pena notar que qualquer porta pode pertencer a várias categorias ou talvez nenhuma, com base em seus recursos e casos de uso.
Porta padrão
Uma porta padrão serve como receita para criar bibliotecas a partir do código-fonte ou fornecer arquivos de cabeçalho para bibliotecas somente de cabeçalho. Ele contém as instruções e os metadados necessários para adquirir, compilar e instalar a biblioteca. A grande maioria das bibliotecas no registro curado são portas padrão.
Meta porta
Uma meta port serve para impor restrições ao gráfico de instalação sem ter seus próprios arquivos de compilação. Essas portas geralmente são usadas para agrupar um conjunto de bibliotecas relacionadas sob um único nome ou para servir como uma camada de indireção para componentes substituíveis. Por exemplo, boost
é uma metaporta que agrupa várias bibliotecas do Boost sob um único nome para facilitar o gerenciamento de dependências.
Porta de script
Uma porta de script contém scripts utilitários que se destinam principalmente a tarefas internas dentro do vcpkg ou para consumo por outras portas. Essas portas permitem o controle de versão dos scripts do utilitário, mantendo assim a compatibilidade e a padronização. Por exemplo, vcpkg-cmake
é uma porta de script que expõe a vcpkg_cmake_configure()
função auxiliar.
Próximas etapas
Este documento fornece uma visão geral das portas em vcpkg, detalhando seus elementos essenciais e várias categorias. Para obter tópicos mais avançados e guias detalhados, consulte o seguinte: