Je configure et empaquette ma bibliothèque en utilisant CMake et CPack. J'ai écrit mon propre module de recherche: FindMyLib.cmake
.
Comment dire à CMake/CPack d'ajouter ce fichier au répertoire du module CMake, afin que les futurs développeurs puissent simplement spécifier FIND_PACKAGE(MyLib)
pour utiliser ma bibliothèque?
Vous pouvez définir CMAKE_MODULE_PATH
et distribuez votre personnalisé FindFoo.cmake
avec votre projet. Par exemple:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
Le répertoire du module CMake fait partie de l'arborescence d'installation de CMake lui-même, et en tant que tel, vous ne devriez pas essayer d'y ajouter quoi que ce soit.
Le répertoire des modules CMake contient des modules qui ont été écrits ou au moins revus par Kitware, et y ajouter les vôtres donnerait l'impression aux utilisateurs de votre projet que c'était également le cas pour votre projet.
Vous feriez mieux d'installer simplement FindMyLib.cmake à l'un des endroits recherchés par find_package
:
<prefix>/ (Windows) <prefix>/(cmake|CMake)/ (Windows) <prefix>/<name>*/ (Windows) <prefix>/<name>*/(cmake|CMake)/ (Windows) <prefix>/(lib/<Arch>|lib|share)/cmake/<name>*/ (Unix) <prefix>/(lib/<Arch>|lib|share)/<name>*/ (Unix) <prefix>/(lib/<Arch>|lib|share)/<name>*/(cmake|CMake)/ (Unix) <prefix>/<name>.framework/Resources/ (Apple) <prefix>/<name>.framework/Resources/CMake/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/CMake/ (Apple) <prefix>/<name>.app/Contents/Resources/ (Apple) <prefix>/<name>.app/Contents/Resources/CMake/ (Apple)
Voir la documentation pour find_package
pour plus de détails sur la façon dont find_package
recherches. Le didacticiel d'empaquetage CMake est également utile dans ce cas.
La meilleure façon de permettre
les futurs développeurs peuvent simplement spécifier FIND_PACKAGE (MyLib) pour utiliser ma bibliothèque
consiste à écrire un fichier de configuration de package (-config.cmake), pas un module Find. Le fichier de configuration du package doit ensuite être installé dans l'un des dossiers où le module FindPackage recherche (quelque chose comme/lib/package/ou/lib/cmake/package le second étant préféré)
Le module FindPackage chargera automatiquement le fichier de configuration s'il peut le trouver.
Le wiki CMake contient des instructions plus détaillées sur https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging