Compartir a través de


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 .libde archivos , .so, .dyliby .a
debug/lib/manual-link Archivos de depuración .lib, .so, , .dyliby .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 .libarchivos , .soy .a .dylib
lib/manual-link Versión enlazable .libmanualmente, archivos , .so, .dyliby .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

bindirectorios 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.hde 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.hy 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.

libdirectorios y debug/lib

Contiene bibliotecas estáticas, bibliotecas de importación (en Windows) y bibliotecas compartidas (en no Windows).

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

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.