vcpkg ofrece una integración perfecta con CMake para que los paquetes instalados estén disponibles automáticamente en los proyectos. El mecanismo en el que se integra vcpkg es proporcionando un archivo de cadena de herramientas de CMake.
La primera vez que CMake configura un proyecto, ejecuta rutinas de búsqueda internas para buscar una cadena de herramientas viable (compilador, enlazador, etc.). Esta búsqueda se produce dentro de la project() función en CMakeLists.txt.
Para personalizar el proceso de selección de cadenas de herramientas, CMake admite el uso de scripts de lenguaje CMake personalizados, conocidos como archivos de cadena de herramientas. Se especifica un archivo de cadena de herramientas estableciendo la CMAKE_TOOLCHAIN_FILE variable . CMake evalúa el contenido del script de cadena de herramientas proporcionado y establece definiciones de variables, rutas de acceso a las herramientas de compilación necesarias y otros parámetros de compilación, como marcas de compilación cruzadas, en consecuencia.
Cuando se establece CMAKE_TOOLCHAIN_FILE para usar la cadena de herramientas vcpkg (<vcpkg-root>/scripts/buildsystems/vcpkg.cmake), vcpkg aprovecha el mecanismo de archivo de cadena de herramientas para insertar código para integrar con funciones CMake integradas de forma transparente.
Todavía puede usar un archivo de cadena de herramientas para configurar sus propios conjuntos de herramientas mediante la VCPKG_CHAINLOAD_TOOLCHAIN_FILE variable triplet.
La integración de vcpkg funciona de forma diferente en función del modo de operación que use:
En el modo clásico, vcpkg establece las rutas de búsqueda de CMake adecuadamente para que los paquetes instalados estén disponibles a través de las find_package()funciones , find_library()y find_path() .
En el modo de manifiesto, además de lo anterior, la cadena de herramientas detecta archivos de manifiesto (vcpkg.json archivos) y se ejecuta vcpkg install para adquirir automáticamente las dependencias del proyecto.
Dado que el archivo de cadena de herramientas se evalúa durante la project() llamada, todas las variables de nivel de CMake que modifican una configuración de vcpkg deben establecerse antes de la primera llamada a project(). También puede ser necesario volver a configurar el proyecto de CMake si modifica cualquier configuración de vcpkg que produzca cambios hash de ABI .
Si establece CMAKE_TOOLCHAIN_FILE en CMakeList.txt el archivo, asegúrese de que la variable está establecida antes de cualquier llamada a project().
Los proyectos configurados para usar el archivo de cadena de herramientas vcpkg (a través del valor CMAKE_TOOLCHAIN_FILEde CMake ) pueden encontrar bibliotecas de vcpkg mediante las funciones estándar de CMake: find_package(), find_path()y find_library().
Se recomienda usar valores preestablecidos de CMake para especificar el archivo de cadena de herramientas. Por ejemplo, si ha definido la variable VCPKG_ROOTde entorno , puede usar lo siguiente CMakePresets.json y pasar --preset debug la línea de configuración:
Si necesita usar una ruta de acceso absoluta para vcpkg específico de la máquina actual, puede usar CMakeUserPresets.json y agregarla al .gitignore archivo.
vcpkg admite los mecanismos nativos de CMake para buscar bibliotecas: find_package(), find_library()y find_path(). Al instalar bibliotecas con compatibilidad específica con CMake, vcpkg mostrará información de uso sobre cómo consumir la biblioteca:
The package zlib is compatible with built-in CMake targets:
find_package(ZLIB REQUIRED)
target_link_libraries(main PRIVATE ZLIB::ZLIB)
vcpkg no agrega automáticamente ninguna ruta de acceso de inclusión o vínculos al proyecto. Para usar una biblioteca de solo encabezado, puede usar find_path() la que funcionará correctamente en todas las plataformas:
cmake
# To find and use catch2find_path(CATCH_INCLUDE_DIR NAMES catch.hpp PATH_SUFFIXES catch2)
target_include_directories(main PRIVATE ${CATCH_INCLUDE_DIR})
Abra la configuración de cadenas de herramientas (File > Settings en Windows y Linux, CLion > Preferences en macOS) y vaya a la configuración de CMake (Build, Execution, Deployment > CMake). En CMake options, agregue la siguiente línea:
Debe agregar esta línea a cada perfil por separado.
Uso de varios archivos de cadena de herramientas
Para combinar el archivo de cadena de herramientas de vcpkg con otro archivo de cadena de herramientas, puede establecer la variable VCPKG_CHAINLOAD_TOOLCHAIN_FILEde caché de CMake :
vcpkg no aplica automáticamente la configuración de la cadena de herramientas, como el compilador o las marcas de compilación, al compilar bibliotecas. Para cambiar la configuración de la biblioteca de vcpkg, debe crear un archivo triplet personalizado (que puede compartir la cadena de herramientas)**
Referencia de configuración
Todas las variables que afectan a vcpkg deben definirse antes de la primera project() directiva, como en un CMakePresets.jsonmapa de , a través de "cacheVariables" la línea de comandos o set() las instrucciones .
VCPKG_TARGET_TRIPLET
Esta configuración controla el vcpkg triplet desde el que se instalarán y consumirán bibliotecas.
Si no se establece, vcpkg detectará automáticamente un triplet predeterminado adecuado según la configuración actual del compilador. Si cambia esta variable de CMake, debe eliminar la memoria caché y volver a configurarla.
VCPKG_HOST_TRIPLET
Esta variable controla las dependencias de host triples para las que se instalarán.
Si no se establece, vcpkg detectará automáticamente un triplet nativo adecuado (x64-windows, x64-osx, x64-linux).
Esta variable controla la activación de características predeterminadas además de las enumeradas en VCPKG_MANIFEST_FEATURES. Si se establece en ON, las características predeterminadas no se activarán automáticamente.
Tiene como valor predeterminado OFF.
VCPKG_INSTALL_OPTIONS
Esta variable se puede establecer en una lista de parámetros de línea de comandos adicionales para pasar a la herramienta vcpkg durante la instalación automática.
VCPKG_PREFER_SYSTEM_LIBS
Advertencia
Esta característica ha quedado en desuso. En su lugar, use puertos de superposición vacíos.
Esta variable controla si vcpkg anexará en lugar de anteponer sus rutas de acceso a CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH de modo que las bibliotecas o CMAKE_FIND_ROOT_PATH paquetes de vcpkg se encuentren después de la cadena de herramientas,las bibliotecas o paquetes del sistema.
Tiene como valor predeterminado OFF.
VCPKG_FEATURE_FLAGS
Esta variable se puede establecer en una lista de marcas de características para pasar a la herramienta vcpkg durante la instalación automática para participar en el comportamiento experimental.
Consulte la opción de --feature-flags= línea de comandos para obtener más información.
VCPKG_TRACE_FIND_PACKAGE
Cuando se establece en ON, imprima cada llamada a find_package. Las llamadas anidadas (por ejemplo, a través find_dependencyde ) se aplican sangría según la profundidad de anidamiento.
Colaborar con nosotros en GitHub
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de vcpkg
vcpkg es un proyecto de código abierto. Selecciona un vínculo para proporcionar comentarios:
Azure HPC es una capacidad en la nube creada a propósito para la carga de trabajo de IA y de HPC, mediante procesadores de vanguardia e interconexión InfiniBand de clase HPC, con el fin de ofrecer el mejor rendimiento, escalabilidad y valor de la aplicación. Azure HPC permite a los usuarios desbloquear la innovación, la productividad y la agilidad empresarial, mediante una gama de tecnologías de inteligencia artificial y de HPC de alta disponibilidad que se pueden asignar dinámicamente a medida que cambian