Conventions de disposition du répertoire d’installation
Cet article décrit les conventions de disposition utilisées par vcpkg pour le répertoire d’installation. Le répertoire d’installation contient les fichiers installés par chaque package. Les auteurs de ports doivent s’assurer que leurs packages suivent les conventions décrites dans cet article.
En mode classique, le répertoire d’installation se trouve dans $VCPKG_ROOT/installed
(où $VCPKG_ROOT
se trouve votre chemin d’installation vcpkg). En mode manifeste, chaque fichier manifeste a un répertoire correspondant vcpkg_installed
. L’emplacement du répertoire d’installation peut être modifié avec l’option --x-install-root
.
Quel que soit le mode d’opération, la disposition du répertoire d’installation reste la même.
Le répertoire d’installation est créé la première fois qu’un package est installé, si vous ne voyez pas d’annuaire d’installation essayer d’installer d’abord certains packages.
Le niveau racine du répertoire d’installation contient :
- Répertoire
vcpkg
qui effectue le suivi des packages et fichiers installés - Répertoire pour chaque triplet. Chaque répertoire triplet contient des fichiers installés par chaque package.
Répertoires triplet
La sortie de chaque installation de package est contenue dans un répertoire spécifique à triplet.
Par exemple, les packages installés pour le x64-windows
triplet se trouvent dans le installed/x64-windows
répertoire.
La disposition des sous-répertoires à l’intérieur de chaque répertoire triplet est la même :
Remarque
Certains packages peuvent produire des fichiers qui ne correspondent pas aux conventions décrites ici. Les auteurs de ports doivent déterminer l’emplacement final des fichiers produits en fonction de l’objectif que chaque fichier sert.
Sous-répertoire | Type de fichier |
---|---|
bin |
Mise en production .dll et .pdb fichiers |
debug/bin |
Déboguer et .pdb fichiers .dll |
debug/lib |
Déboguer .lib , .so , .dylib , et .a fichiers |
debug/lib/manual-link |
Déboguer .lib manuellement, , .so .dylib et .a fichiers pouvant être liés manuellement |
debug/plugins/<group> |
Fichiers de débogage .dll de chargement du runtime |
debug/lib/pkgconfig |
Déboguer des fichiers pkgconfig (.pc ) |
include |
Header-files (.h , .hpp , .hxx ) |
lib |
Mise en production .lib , .so .dylib et .a fichiers |
lib/manual-link |
Version .lib pouvant être liée manuellement, , .so .dylib et .a fichiers |
lib/pkgconfig |
Fichiers Pkgconfig (.pc ) |
plugins/<group> |
Fichiers de mise en production .dll de chargement du runtime |
share/<port> |
Fichiers indépendants de la configuration supplémentaires |
share/<port>/copyright |
Texte de licence du package |
share/<port>/usage |
Fichier d’instructions d’intégration buildsystem |
share/<port>/vcpkg-port-config.cmake |
Fonctions et variables CMake définies par port |
share/<lowercase-package>/<package>Config.cmake |
Fichiers d’intégration CMake pour find_package(package) |
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake |
Remplacement CMake find_package(<cmakepackagename>) |
share/pkgconfig |
Fichiers pkgconfig indépendants de la configuration (.pc ) |
tools/<port> |
Outils exécutables |
bin
et debug/bin
répertoires
Sur Windows, ces répertoires contiennent des fichiers DLL et PDB pour la configuration de mise en production et de débogage respectivement. Tout fichier exécutable produit par un port doit être déplacé vers un tools/<port>
répertoire.
include
Contient des fichiers d’en-tête (.h
, .hpp
, .hxx
). La disposition sous ce répertoire doit refléter l’utilisation prévue des fichiers d’en-tête du package. Par exemple, une contoso
bibliothèque qui a l’intention d’utiliser #include <contoso/contoso.h>
doit fournir le fichier d’en-tête include/contoso/contoso.h
.
vcpkg interdit l’installation de certains noms de fichiers d’en-tête réservés à la racine du include
répertoire, par exemple : err.h
, , user.h
time.h
, et d’autres.
Les bibliothèques qui fournissent un nom de fichier d’en-tête interdit doivent placer leurs fichiers d’en-tête dans un include/<port>
répertoire. Si la bibliothèque a l’intention de remplacer un fichier d’en-tête système, elle doit définir la VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
stratégie dans son portfile.cmake
fichier .
lib
et debug/lib
répertoires
Contient des bibliothèques statiques, des bibliothèques d’importation (sur Windows) et des bibliothèques partagées (sur non-Windows).
lib/manual-link
et debug/lib/manual-link
répertoires
Contient des bibliothèques qui doivent être liées manuellement.
Les fichiers susceptibles de provoquer des problèmes lorsque les liens doivent être placés automatiquement dans les lib/manual-link
dossiers au lieu du lib
répertoire. Par exemple, si une bibliothèque est destinée à définir la main()
fonction d’un programme.
lib/pkgconfig
et debug/lib/pkgconfig
share/pkgconfig
répertoires
Contient des fichiers d’intégration pkgconfig (.pc
). Une bibliothèque ne doit pas fournir de fichiers dépendants de la configuration et indépendants de la configuration en même temps.
Par exemple : ne pas installer lib/pkgconfig/contoso.pc
et share/pkgconfig/contoso.pc
.
plugins/<group>
et debug/plugins/<group>
Contient des bibliothèques partagées destinées à être chargées pendant l’exécution en consommant des applications.
share/<port>
Contient des fichiers divers installés par chaque port. Par exemple, les fichiers SPDX, les scripts, etc.
share/<port>/copyright
vcpkg s’attend à ce que les ports fournissent un copyright
fichier qui contient les informations de licence du package installé. Pour plus d’informations, consultez le guide de maintenance.
share/<port>/usage
Fichier texte avec des instructions pour intégrer une bibliothèque dans un projet. Pour plus d’informations, consultez le guide pour fournir de la documentation sur l’utilisation des packages .
share/<lowercase-package>/<package>Config.cmake
, share/<package>/<package>-config.cmake
Les fichiers d’intégration CMake doivent être placés dans le share
dossier et respecter les règles de CMake pour find_package(package)
en CONFIG
mode.
Par exemple, si un port s’attend à fournir find_package(MyPackage REQUIRED)
, il doit fournir l’une ou l’autre share/mypackage/MyPackageConfig.cmake
ou share/mypackage/MyPackage-config.cmake
.
Si un package fournit des fichiers d’intégration CMake, le vcpkg_cmake_config_fixup()
La fonction d’assistance doit être appelée pour corriger les chemins non délocalisables et fusionner les configurations de build.
tools/<port>
Important
vcpkg est d’abord un gestionnaire de dépendances de bibliothèque C++. Les auteurs de ports doivent être délibérés lors de la décision d’inclure des outils dans la sortie d’installation. Par exemple : envisagez d’installer uniquement un exécutable de mise en production lorsque l’outil de débogage n’est pas nécessaire.
Les exécutables de mise en production et de débogage doivent être fournis lorsque les exécutables sont destinés à une utilisation du runtime.
Contient des outils exécutables générés par un port. Il est vivement recommandé, mais pas obligatoire, que chaque exécutable installé passe dans un sous-répertoire correspondant au nom du port qui l’a produit. Par exemple, un contoso
port peut installer un ContosoGenerator.exe
port sur tools/contoso/ContosoGenerator.exe
.
Certains ports nécessitent que leurs exécutables entrent dans un bin
sous-répertoire, auquel cas le modèle recommandé est tools/<port>/bin
.