Comment installer votre module CMake-Find personnalisé

Je configure et empaquette ma bibliothèque en utilisant CMake et CPack. J’ai écrit mon propre module de recherche FindMyLib.cmake.

Comment puis-je demander à CMake / CPack d’append 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 dissortingbuer votre FindFoo.cmake personnalisé 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’arbre d’installation de CMake lui-même et vous ne devriez donc pas essayer d’y append quelque chose.

Le répertoire du module CMake contient des modules qui ont été écrits ou au moins examinés par Kitware, et append le vôtre 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 dans l’un des endroits recherchés par find_package :

 / (Windows) /(cmake|CMake)/ (Windows) /*/ (Windows) /*/(cmake|CMake)/ (Windows) /(lib/|lib|share)/cmake/*/ (Unix) /(lib/|lib|share)/*/ (Unix) /(lib/|lib|share)/*/(cmake|CMake)/ (Unix) /.framework/Resources/ (Apple) /.framework/Resources/CMake/ (Apple) /.framework/Versions/*/Resources/ (Apple) /.framework/Versions/*/Resources/CMake/ (Apple) /.app/Contents/Resources/ (Apple) /.app/Contents/Resources/CMake/ (Apple) 

Reportez-vous à la documentation de find_package pour plus de détails sur la façon dont find_package effectue des recherches. Le tutoriel d’emballage 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

est d’écrire un fichier de configuration de package (-config.cmake), pas un module Find. Le fichier de configuration du paquet doit alors ê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érable).

Le module FindPackage chargera automatiquement le fichier de configuration s’il peut le trouver là.

Le wiki CMake comporte des instructions plus détaillées sur https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging