Convenções de layout de diretórios 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 ficheiros instalados por cada pacote. Os autores do port devem garantir que os seus pacotes seguem 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 teu vcpkg). No modo manifesto, cada ficheiro manifesto tem um diretório correspondente vcpkg_installed . A localização do diretório de instalação pode ser alterada com esta --x-install-root opção. Independentemente do modo de operação, a disposição do diretório de instalação mantém-se a mesma.

O diretório de instalação é criado na primeira vez que um pacote é instalado; se não vires um diretório de instalação, tenta instalar alguns pacotes primeiro.

O nível raiz do diretório de instalação contém:

  • Um vcpkg diretório que acompanha os pacotes e ficheiros instalados
  • Um diretório para cada trigémeo. Cada diretório triplet contém ficheiros instalados por cada pacote.

Diretórios de tercinos

A saída de cada instalação de pacote está contida num diretório específico de triplets. Por exemplo, os pacotes instalados para o x64-windows triplet estão localizados no installed/x64-windows diretório.

A disposição dos subdiretórios dentro de cada diretório triplet é a mesma:

Note

Alguns pacotes podem produzir ficheiros que não correspondem às convenções aqui descritas. Os autores das portas devem determinar a localização final dos ficheiros produzidos com base no propósito de cada ficheiro.

Subdiretório Tipo de ficheiro
bin Lançamento .dll e .pdb ficheiros
debug/bin Depuração .dll e .pdb ficheiros
debug/lib Depurar .lib, .so, .dylib, e .a ficheiros
debug/lib/manual-link Depuração .libmanual ligável , .so, .dylib, e .a ficheiros
debug/plugins/<group> Bibliotecas partilhadas de depuração em tempo de execução e carregamento
debug/lib/pkgconfig Depurar ficheiros pkg-config (.pc)
include Ficheiros de cabeçalho (.h, .hpp, .hxx)
lib Libertar .lib, .so, .dylib e .a ficheiros
lib/manual-link Versão .libmanual ligável , .so, .dylib, e .a ficheiros
lib/pkgconfig Libertar ficheiros pkg-config (.pc)
plugins/<group> Bibliotecas partilhadas de lançamento e carregamento em tempo de execução
share/<port> Ficheiros adicionais independentes da configuração
share/<port>/copyright O texto da licença do pacote
share/<port>/usage Ficheiro de instruções de integração do sistema de construção
share/<port>/usage-accurate Marcador de precisão de utilização gerado
share/<port>/vcpkg.spdx.json Lista de materiais de software gerada
share/<port>/vcpkg-port-config.cmake Funções e variáveis CMake definidas por portas
share/<lowercase-package>/<package>Config.cmake Ficheiros de integração CMake para find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake Sobreposição CMake find_package(<cmakepackagename>)
share/pkgconfig Ficheiros pkg-config independentes da configuração (.pc)
tools/<port> Ferramentas executáveis e ficheiros de suporte

bin e debug/bin diretórios

No Windows, estes diretórios contêm ficheiros DLL e PDB para configuração de lançamento e depuração, respetivamente. Qualquer ficheiro executável produzido por uma porta deve ser movido para um tools/<port> diretório.

include

Contém ficheiros de cabeçalho (.h, .hpp, .hxx). O layout sob este diretório deve refletir o uso pretendido dos ficheiros de cabeçalho do pacote. Por exemplo, uma contoso biblioteca que pretende usar #include <contoso/contoso.h> deve fornecer o ficheiro include/contoso/contoso.hde cabeçalho .

o vcpkg proíbe a instalação de alguns nomes de ficheiros 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 ficheiro de cabeçalho proibido devem colocar os seus ficheiros de cabeçalho dentro de um include/<port> diretório. Se a biblioteca pretende substituir um ficheiro de cabeçalho do sistema, deve definir a VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS política no seu portfile.cmakeficheiro .

lib e debug/lib diretórios

Contém bibliotecas estáticas, bibliotecas de importação (no Windows) e bibliotecas partilhadas (em não-Windows).

Contém bibliotecas que devem ser ligadas manualmente.

Ficheiros que podem causar problemas quando ligados automaticamente devem ser colocados nas lib/manual-link pastas em vez do lib diretório. Por exemplo, se uma biblioteca for destinada a definir a main() função de um programa.

lib/pkgconfig, debug/lib/pkgconfig e share/pkgconfig diretórios

Contém ficheiros de integração pkg-config (.pc). Uma biblioteca não deve fornecer ficheiros dependentes e dependentes da 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 partilhadas que devem ser carregadas durante o tempo de execução pelas aplicações consumidoras.

share/<port>

Contém ficheiros diversos instalados em cada porta. Por exemplo, ficheiros SPDX, scripts, etc.

O VCPKG espera que as portas forneçam um copyright ficheiro que contenha a informação de licença do pacote instalado. Consulte o guia do mantenedor para mais informações.

share/<port>/usage

Um ficheiro de texto com instruções para integrar uma biblioteca dentro de um projeto. Consulte o guia para fornecer documentação de utilização dos pacotes para mais informações.

share/<port>/usage-accurate

Um ficheiro de marcadores vazio que confirme a informação de utilização gerada pelo vcpkg é preciso. Quando este ficheiro é instalado, o vcpkg omite o aviso heurístico da informação de utilização gerada. Consulte o guia de documentação de utilização para mais informações.

share/<port>/vcpkg.spdx.json

A lista de materiais de software gerada pelo vcpkg para o pacote instalado.

share/<lowercase-package>/<package>Config.cmake, share/<package>/<package>-config.cmake

Os ficheiros de integração do CMake devem ser colocados na share pasta e respeitar as regras do CMake para find_package(package) em CONFIG modo.

Por exemplo, se uma porta espera fornecer find_package(MyPackage REQUIRED), deve fornecer ou share/mypackage/MyPackageConfig.cmake .share/mypackage/MyPackage-config.cmake

Se um pacote fornecer ficheiros de integração CMake, o vcpkg_cmake_config_fixup() A função auxiliar deve ser invocada para corrigir quaisquer caminhos não realocáveis e para fundir configurações de build.

tools/<port>

Importante

O vcpkg é, antes de mais, um gestor de dependências de bibliotecas em C++. Os autores das portas devem ser deliberados ao decidir incluir ferramentas na saída da instalação. Por exemplo: considere instalar apenas um executável de lançamento quando a ferramenta de depuração não for necessária.

Devem ser fornecidos executáveis de release e debug quando os executáveis forem destinados a uso em tempo de execução.

Contém ferramentas executáveis produzidas por uma porta. É altamente recomendado, mas não obrigatório, que cada executável instalado vá para um subdiretório correspondente ao nome da porta que o produziu. Por exemplo, uma contoso porta pode instalar um ContosoGenerator.exe para tools/contoso/ContosoGenerator.exe.

Algumas portas exigem que os seus executáveis entrem num bin subdiretório, caso em que o padrão recomendado é tools/<port>/bin.