Convenciones de diseño de directorio de instalación
En este artículo se describen las convenciones de diseño usadas por vcpkg para el directorio de instalación. El directorio de instalación contiene los archivos instalados por cada paquete. Los autores de puertos deben asegurarse de que sus paquetes siguen las convenciones descritas en este artículo.
En el modo clásico, el directorio de instalación se encuentra en $VCPKG_ROOT/installed
(donde $VCPKG_ROOT
es la ruta de instalación de vcpkg). En el modo de manifiesto, cada archivo de manifiesto tiene un directorio correspondiente vcpkg_installed
. La ubicación del directorio de instalación se puede cambiar con la --x-install-root
opción .
Independientemente del modo de operación, el diseño del directorio de instalación sigue siendo el mismo.
El directorio de instalación se crea la primera vez que se instala un paquete, si no ve un directorio de instalación, pruebe primero a instalar algunos paquetes.
El nivel raíz del directorio de instalación contiene:
- Un
vcpkg
directorio que realiza un seguimiento de los paquetes y archivos instalados - Un directorio para cada triplete. Cada directorio triplet contiene archivos instalados por cada paquete.
Directorios triples
La salida de cada instalación del paquete se encuentra en un directorio específico de triplet.
Por ejemplo, los paquetes instalados para el triplet se encuentran en installed/x64-windows
el x64-windows
directorio .
El diseño de los subdirectorios dentro de cada directorio triple es el mismo:
Nota:
Algunos paquetes pueden generar archivos que no coincidan con las convenciones descritas aquí. Los autores de puertos deben determinar la ubicación final de los archivos producidos en función del propósito que sirve cada archivo.
Subdirectorio | Tipo de archivo |
---|---|
bin |
Versión .dll y .pdb archivos |
debug/bin |
Depuración .dll y .pdb archivos |
debug/lib |
Depuración .lib de archivos , .so , .dylib y .a |
debug/lib/manual-link |
Archivos de depuración .lib , .so , , .dylib y .a que se pueden vincular manualmente |
debug/plugins/<group> |
Archivos de depuración .dll de carga en tiempo de ejecución |
debug/lib/pkgconfig |
Depurar archivos pkgconfig (.pc ) |
include |
Archivos de encabezado (.h , .hpp , .hxx ) |
lib |
Liberar .lib archivos , .so y .a .dylib |
lib/manual-link |
Versión enlazable .lib manualmente, archivos , .so , .dylib y .a |
lib/pkgconfig |
Archivos Pkgconfig (.pc ) |
plugins/<group> |
Archivos de versión de carga en tiempo de ejecución .dll |
share/<port> |
Archivos independientes de configuración adicionales |
share/<port>/copyright |
Texto de licencia del paquete |
share/<port>/usage |
Archivo de instrucciones de integración del sistema de compilación |
share/<port>/vcpkg-port-config.cmake |
Funciones y variables de CMake definidas por el puerto |
share/<lowercase-package>/<package>Config.cmake |
Archivos de integración de CMake para find_package(package) |
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake |
Invalidación de CMake find_package(<cmakepackagename>) |
share/pkgconfig |
Archivos pkgconfig independientes de configuración (.pc ) |
tools/<port> |
Herramientas ejecutables |
bin
directorios y debug/bin
En Windows, estos directorios contienen archivos DLL y PDB para la configuración de versión y depuración, respectivamente. Cualquier archivo ejecutable generado por un puerto debe moverse a un tools/<port>
directorio.
include
Contiene archivos de encabezado (.h
, .hpp
, .hxx
). El diseño de este directorio debe reflejar el uso previsto de los archivos de encabezado del paquete. Por ejemplo, una contoso
biblioteca que pretende usar #include <contoso/contoso.h>
debe proporcionar el archivo include/contoso/contoso.h
de encabezado .
vcpkg prohíbe instalar algunos nombres de archivo de encabezado reservados en la raíz del include
directorio, por ejemplo: err.h
, user.h
, time.h
y otros.
Las bibliotecas que proporcionan un nombre de archivo de encabezado prohibido deben colocar sus archivos de encabezado dentro de un include/<port>
directorio. Si la biblioteca pretende reemplazar un archivo de encabezado del sistema, debe establecer la VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
directiva en su portfile.cmake
.
lib
directorios y debug/lib
Contiene bibliotecas estáticas, bibliotecas de importación (en Windows) y bibliotecas compartidas (en no Windows).
lib/manual-link
directorios y debug/lib/manual-link
Contiene bibliotecas que se deben vincular manualmente.
Los archivos que pueden causar problemas cuando los vínculos se deben colocar automáticamente en las lib/manual-link
carpetas en lugar del lib
directorio. Por ejemplo, si una biblioteca está pensada para definir la main()
función de un programa.
lib/pkgconfig
Directorios y debug/lib/pkgconfig
share/pkgconfig
Contiene archivos de integración pkgconfig (.pc
). Una biblioteca no debe proporcionar archivos dependientes de la configuración e independientes de la configuración al mismo tiempo.
Por ejemplo: no instale lib/pkgconfig/contoso.pc
y share/pkgconfig/contoso.pc
.
plugins/<group>
y debug/plugins/<group>
Contiene bibliotecas compartidas diseñadas para cargarse durante el tiempo de ejecución mediante la consumo de aplicaciones.
share/<port>
Contiene archivos varios instalados por cada puerto. Por ejemplo, archivos SPDX, scripts etcetera.
share/<port>/copyright
vcpkg espera que los puertos proporcionen un copyright
archivo que contenga la información de licencia del paquete instalado. Consulte la guía del mantenedor para obtener más información.
share/<port>/usage
Un archivo de texto con instrucciones para integrar una biblioteca dentro de un proyecto. Consulte la guía para proporcionar documentación de uso para paquetes para obtener más información.
share/<lowercase-package>/<package>Config.cmake
, share/<package>/<package>-config.cmake
Los archivos de integración de CMake deben colocarse en la share
carpeta y respetar las reglas de CMake para find_package(package)
en CONFIG
modo.
Por ejemplo, si un puerto espera proporcionar find_package(MyPackage REQUIRED)
, debe proporcionar share/mypackage/MyPackageConfig.cmake
o share/mypackage/MyPackage-config.cmake
.
Si un paquete proporciona archivos de integración de CMake, vcpkg_cmake_config_fixup()
Se debe invocar la función auxiliar para corregir las rutas de acceso no relocatables y para combinar configuraciones de compilación.
tools/<port>
Importante
vcpkg es, en primer lugar, un administrador de dependencias de biblioteca de C++. Los autores de puertos deben ser deliberados al decidir incluir herramientas en la salida de la instalación. Por ejemplo: considere la posibilidad de instalar solo un ejecutable de versión cuando no se necesite la herramienta de depuración.
Los ejecutables de versión y depuración deben proporcionarse cuando los ejecutables están diseñados para su uso en tiempo de ejecución.
Contiene herramientas ejecutables generadas por un puerto. Se recomienda encarecidamente, pero no es necesario, que cada archivo ejecutable instalado entre en un subdirectorio que coincida con el nombre del puerto que lo generó. Por ejemplo, un contoso
puerto podría instalar en ContosoGenerator.exe
tools/contoso/ContosoGenerator.exe
.
Algunos puertos requieren que sus archivos ejecutables entren en un bin
subdirectorio, en cuyo caso el patrón recomendado es tools/<port>/bin
.