Compartilhar via


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, .dylibe .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, .soe .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.hde 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.cmakearquivo .

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).

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/pkgconfige 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.

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.