Convenções de layout do diretório de instalação
Este artigo descreve as convenções de layout usadas pelo vcpkg para o diretório de instalação. O diretório de instalação contém os arquivos instalados por cada pacote. Os autores de ports devem garantir que seus pacotes sigam as convenções descritas neste artigo.
No modo clássico, o diretório de instalação está localizado em $VCPKG_ROOT/installed
(onde $VCPKG_ROOT
está o caminho de instalação do vcpkg). No modo de manifesto, cada arquivo de manifesto tem um diretório correspondente vcpkg_installed
. O local do diretório de instalação pode ser alterado com a --x-install-root
opção.
Independentemente do modo de operação, o layout do diretório de instalação permanece o mesmo.
O diretório de instalação é criado na primeira vez que um pacote é instalado, se você não vir um diretório de instalação, tente instalar alguns pacotes primeiro.
O nível raiz do diretório de instalação contém:
- Um
vcpkg
diretório que mantém o controle de pacotes e arquivos instalados - Um diretório para cada trigêmeo. Cada diretório triplo contém arquivos instalados por cada pacote.
Diretórios de trigêmeos
A saída de cada instalação de pacote está contida em um diretório específico de trigêmeos.
Por exemplo, os pacotes instalados para o x64-windows
trio estão localizados no installed/x64-windows
diretório.
O layout dos subdiretórios dentro de cada diretório triplo é o mesmo:
Observação
Alguns pacotes podem produzir arquivos que não correspondem às convenções descritas aqui. Os autores de portas devem determinar o local final dos arquivos produzidos com base na finalidade de cada arquivo.
Subdiretório | Tipo de arquivo |
---|---|
bin |
Liberação .dll e .pdb arquivos |
debug/bin |
Depuração .dll e .pdb arquivos |
debug/lib |
Depurar .lib , .so , .dylib e .a arquivos |
debug/lib/manual-link |
Depuração .lib , .so , .dylib , e .a arquivos vinculáveis manualmente |
debug/plugins/<group> |
Arquivos de depuração .dll de carregamento em tempo de execução |
debug/lib/pkgconfig |
Depurar arquivos pkgconfig (.pc ) |
include |
Arquivos de cabeçalho (.h , .hpp , .hxx ) |
lib |
Liberar .lib , .so e .dylib .a arquivos |
lib/manual-link |
Versão , , , e .a arquivos vinculáveis manualmente .lib .so .dylib |
lib/pkgconfig |
Arquivos Pkgconfig (.pc ) |
plugins/<group> |
Arquivos de versão .dll de carregamento de tempo de execução |
share/<port> |
Arquivos adicionais independentes de configuração |
share/<port>/copyright |
O texto da licença para o pacote |
share/<port>/usage |
Arquivo de instruções de integração do sistema de compilação |
share/<port>/vcpkg-port-config.cmake |
Funções e variáveis do CMake definidas pela porta |
share/<lowercase-package>/<package>Config.cmake |
Arquivos de integração do CMake para find_package(package) |
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake |
Substituição do CMake find_package(<cmakepackagename>) |
share/pkgconfig |
Arquivos pkgconfig independentes de configuração (.pc ) |
tools/<port> |
Ferramentas executáveis |
bin
e debug/bin
diretórios
No Windows, esses diretórios contêm arquivos DLL e PDB para configuração de versão e depuração, respectivamente. Qualquer arquivo executável produzido por um port deve ser movido para um tools/<port>
diretório.
include
Contém arquivos de cabeçalho (.h
, .hpp
, .hxx
). O layout nesse diretório deve refletir o uso pretendido dos arquivos de cabeçalho do pacote. Por exemplo, uma contoso
biblioteca que pretende usar #include <contoso/contoso.h>
deve fornecer o arquivo include/contoso/contoso.h
de cabeçalho .
O vcpkg proíbe a instalação de alguns nomes de arquivo de cabeçalho reservados na raiz do include
diretório, por exemplo: err.h
, user.h
, time.h
, e outros.
As bibliotecas que fornecem um nome de arquivo de cabeçalho proibido devem colocar seus arquivos de cabeçalho dentro de um include/<port>
diretório. Se a biblioteca pretende substituir um arquivo de cabeçalho do sistema, ela deve definir a VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
política em seu portfile.cmake
arquivo .
lib
e debug/lib
diretórios
Contém bibliotecas estáticas, bibliotecas de importação (no Windows) e bibliotecas compartilhadas (em versões não Windows).
lib/manual-link
e debug/lib/manual-link
diretórios
Contém bibliotecas que devem ser vinculadas manualmente.
Os arquivos que podem causar problemas quando vinculados automaticamente devem ser colocados nas lib/manual-link
pastas em vez do lib
diretório. Por exemplo, se uma biblioteca se destina a definir a main()
função de um programa.
lib/pkgconfig
e debug/lib/pkgconfig
share/pkgconfig
diretórios
Contém arquivos de integração pkgconfig (.pc
). Uma biblioteca não deve fornecer arquivos dependentes e independentes de configuração ao mesmo tempo.
Por exemplo: não instale lib/pkgconfig/contoso.pc
e share/pkgconfig/contoso.pc
.
plugins/<group>
e debug/plugins/<group>
Contém bibliotecas compartilhadas que devem ser carregadas durante o tempo de execução consumindo aplicativos.
share/<port>
Contém arquivos diversos instalados por cada porta. Por exemplo, arquivos SPDX, scripts, etc.
share/<port>/copyright
O vcpkg espera que o ports forneça um copyright
arquivo que contenha as informações de licença do pacote instalado. Consulte o guia do mantenedor para obter mais informações.
share/<port>/usage
Um arquivo de texto com instruções para integrar uma biblioteca em um projeto. Consulte o guia para fornecer documentação de uso para pacotes para obter mais informações.
share/<lowercase-package>/<package>Config.cmake
, share/<package>/<package>-config.cmake
Os arquivos de integração do CMake devem ser colocados na pasta e respeitar as share
regras do CMake para find_package(package)
no CONFIG
modo.
Por exemplo, se uma porta espera fornecer find_package(MyPackage REQUIRED)
, ela deve fornecer ou share/mypackage/MyPackageConfig.cmake
share/mypackage/MyPackage-config.cmake
.
Se um pacote fornecer arquivos de integração do CMake, o vcpkg_cmake_config_fixup()
A função auxiliar deve ser invocada para corrigir quaisquer caminhos não realocáveis e mesclar configurações de compilação.
tools/<port>
Importante
vcpkg é, antes de tudo, um gerenciador de dependências de bibliotecas C++. Os autores de ports devem ser deliberados ao decidir incluir ferramentas na saída da instalação. Por exemplo: considere instalar apenas um executável de versão quando a ferramenta de depuração não for necessária.
Os executáveis de versão e depuração devem ser fornecidos quando os executáveis se destinam ao uso em tempo de execução.
Contém ferramentas executáveis produzidas por um port. É altamente recomendado, mas não obrigatório, que cada executável instalado vá para um subdiretório que corresponda ao nome do port que o produziu. Por exemplo, um contoso
port pode instalar um ContosoGenerator.exe
arquivo para tools/contoso/ContosoGenerator.exe
.
Algumas portas exigem que seus executáveis entrem em um bin
subdiretório, caso em que o padrão recomendado é tools/<port>/bin
.