
Proviseur de dépendance CMake pour le gestionnaire de packages Conan C et C ++.
cmake-conan . |
|---|
L'intégration cmake-conan dans cette branche develop2 pour Conan 2 à l'aide des fournisseurs de dépendances CMake, même si elle n'est pas encore publiée comme 1.0, est plus stable, prête à la production et recommandée que le héritage cmake-conan pour Conan 1. Veuillez mettre à jour Conan 2 et la nouvelle intégration cmake-conan dans cette branche develop2 . |
Prérequis:
conanfile.txt ou conanfile.py pour énumérer les dépendances requises. Tout d'abord, clone ce référentiel dans la branche develop2 .
git clone https://github.com/conan-io/cmake-conan.git -b develop2 Ce référentiel contient un CMakeLists.txt avec un exemple de projet qui dépend 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 Assurez-vous que vous avez placé un conanfile.txt ou conanfile.py à la racine de votre projet, répertoriant vos besoins. Vous pouvez voir Conanfile.txt pour un exemple, ou vérifier la documentation Conan pour conanfile : .txt Docs, .py docs.
Lorsque vous invoquez d'abord Cmake pour configurer le projet, passez -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=[path-to-cmake-conan]/conan_provider.cmake . Cela garantira que conan install est invoqué à partir de Cmake. Cette intégration ne nécessite pas de modifications à vos 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 est spécifié - pour les paramètres de construction qui seraient autrement fournis par CMakeToolchain (par exemple, le compilateur lui-même ou d'autres paramètres de construction globale) veuillez invoquer Conan séparément selon la documentation.find_package . Pour les dépendances qui ont une logique en dehors de find_package , par exemple, en passant des appels directs vers find_program , find_library , find_path ou find_file , ceux-ci peuvent ne pas fonctionner correctement.CMAKE_BUILD_TYPE valide (ne peut pas être laissé vide) Le fournisseur de dépendance CMake-Conan créera un profil Conan où les paramètres ( os , arch , compiler , build_type ) sont récupérés à partir de ce que CMake a détecté pour la construction actuelle. Conan utilise deux profils pour les dépendances, l' hôte et les profils de construction . Vous pouvez en savoir plus à leur sujet ici. Dans CMake-Conan, le comportement par défaut est le suivant:
default .default . Veuillez noter que pour que ce qui précède fonctionne, un profil default doit déjà exister. Si ce n'est pas le cas, cmake-conan invoquera le mécanisme d'autodétection de Conan qui essaie de deviner le système par défaut.
Si vous avez besoin de personnaliser le profil, vous pouvez le faire en modifiant la valeur de CONAN_HOST_PROFILE et CONAN_BUILD_PROFILE et en les faisant passer sous forme de variables de cache cmake. Quelques exemples:
-DCONAN_HOST_PROFILE="default;auto-cmake" : Effectuez l'autodétection comme décrit ci-dessus, et se repliez au profil par défaut pour autre chose (comportement par défaut).-DCONAN_HOST_PROFILE=clang16 : n'effectuez pas d'autodétection et utilisez le profil clang16 qui doit exister dans le dossier Conan Profils (voir les documents.)-DCONAN_BUILD_PROFILE="/path/to/profile" : Alternativement, fournissez un chemin vers un fichier de profil qui peut être n'importe où dans le système de fichiers.-DCONAN_HOST_PROFILE="default;custom" : Liste de profils séparés en semi-colon. Un profil composé sera utilisé (voir les documents) - compendé de gauche à droite, où la droite a la priorité la plus élevée. Le fournisseur de dépendance CMake-Conan sera automatiquement au courant et transmettra les informations de profil comme décrit ci-dessus. Si l'invocation de la commande conan install doit être personnalisée plus loin, la variable CONAN_INSTALL_ARGS peut être utilisée.
CONAN_INSTALL_ARGS est initialisé pour passer --build=missing . Si vous personnalisez cette variable, veuillez noter que Conan reviendra à son comportement par défaut, sauf si vous spécifiez l'indicateur --build .conanfile.txt|.py , et le format de sortie ( --format format).--build=never;--update;--lockfile-out='' Il y a quelques tests, vous pouvez fonctionner dans Python, avec PyTest, par exemple:
$ pytest -rA