
Proveedor de dependencia de CMake para el Administrador de paquetes Conan C y C ++.
cmake-conan . |
|---|
La integración cmake-conan en esta sucursal develop2 para Conan 2 utilizando proveedores de dependencia de CMake, incluso si no se lanzó como 1.0 todavía, es más estable, listo para la producción y recomendado que el cmake-conan heredado para Conan 1. Actualice a Conan 2 y la nueva integración cmake-conan en esta rama develop2 . |
Prerrequisitos:
conanfile.txt o conanfile.py para enumerar las dependencias requeridas. Primero, clone este repositorio en la rama develop2 .
git clone https://github.com/conan-io/cmake-conan.git -b develop2 Este repositorio contiene una CMakeLists.txt con un proyecto de ejemplo que depende de fmt .
cd cmake-conan/example
mkdir build
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=../conan_provider.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release Asegúrese de haber colocado un conanfile.txt o conanfile.py en la raíz de su proyecto, enumerando sus requisitos. Puede ver ConanFile.txt para obtener un ejemplo, o verificar la documentación de Conan para conanfile : .txt documentos, .py documentos.
Al invocar por primera vez CMake para configurar el proyecto, pase -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=[path-to-cmake-conan]/conan_provider.cmake . Esto asegurará que conan install se invoque desde Cmake. Esta integración no requiere hacer ningún cambio en sus scripts CMakeLists.txt .
cd [your-project]
mkdir build
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=[path-to-cmake-conan]/conan_provider.cmake -DCMAKE_BUILD_TYPE=ReleaseCMakeDeps , para la configuración de la construcción que de otro modo sería proporcionada por CMakeToolchain (por ejemplo, el compilador en sí u otras configuraciones de compilación globales) Invoca a Conan por separado según la documentación.find_package de CMake. Para dependencias que tienen lógica fuera de find_package , por ejemplo, al hacer llamadas directas a find_program , find_library , find_path o find_file , pueden no funcionar correctamente.CMAKE_BUILD_TYPE válido (no se puede dejar en blanco) El proveedor de dependencia de CMake-Conan creará un perfil de Conan donde se recuperan la configuración ( os , arch , compiler , build_type ) de lo que CMake ha detectado para la compilación actual. Conan usa dos perfiles para dependencias, el host y los perfiles de compilación . Puedes leer más sobre ellos aquí. En CMake-Conan, el comportamiento predeterminado es el siguiente:
default .default . Tenga en cuenta que para que funcione lo anterior, ya debe existir un perfil default . Si no es así, cmake-conan invocará el mecanismo de autodetección de Conan, lo que intenta adivinar que el sistema está por defecto.
Si necesita personalizar el perfil, puede hacerlo modificando el valor de CONAN_HOST_PROFILE y CONAN_BUILD_PROFILE y pasándolos como variables de caché Cmake. Algunos ejemplos:
-DCONAN_HOST_PROFILE="default;auto-cmake" : realice una autodetección como se describió anteriormente, y retroceso al perfil predeterminado para cualquier otra cosa (comportamiento predeterminado).-DCONAN_HOST_PROFILE=clang16 : no realice una autodetección y use el perfil clang16 que debe existir en la carpeta de perfiles de Conan (ver documentos).-DCONAN_BUILD_PROFILE="/path/to/profile" : alternativamente, proporcione una ruta a un archivo de perfil que pueda estar en cualquier lugar del sistema de archivos.-DCONAN_HOST_PROFILE="default;custom" : lista de perfiles separados por semi-colon. Se utilizará un perfil compuesto (ver documentos), compundido de izquierda a derecha, donde la derecha tiene la más alta prioridad. El proveedor de dependencia CMake-CONAN se autodetectará y pasará la información del perfil como se describió anteriormente. Si la invocación del comando conan install debe personalizarse más, se puede utilizar la variable CONAN_INSTALL_ARGS .
CONAN_INSTALL_ARGS se inicializa para que pase --build=missing . Si personaliza esta variable, tenga en cuenta que Conan volverá a su comportamiento predeterminado a menos que especifique el indicador --build .conanfile.txt|.py , y el formato de salida ( --format ).--build=never;--update;--lockfile-out='' Hay algunas pruebas, puedes ejecutar en Python, con Pytest, por ejemplo:
$ pytest -rA