J'essaie de faire fonctionner un système de construction multi-plateforme en utilisant CMake. Maintenant, le logiciel a quelques dépendances. Je les ai compilés moi-même et les ai installés sur mon système.
Quelques exemples de fichiers installés:
-- Installing: /usr/local/share/SomeLib/SomeDir/somefile
-- Installing: /usr/local/share/SomeLib/SomeDir/someotherfile
-- Installing: /usr/local/lib/SomeLib/somesharedlibrary
-- Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake
-- Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake
Maintenant, CMake a un find_package()
qui ouvre un Find*.cmake
fichier et recherche après la bibliothèque sur le système et définit certaines variables comme SomeLib_FOUND
etc.
My CMakeLists.txt contient quelque chose comme ceci:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
La première commande définit où CMake recherche après le Find*.cmake
et j'ai ajouté le répertoire SomeLib
où le FindSomeLib.cmake
peut être trouvé, donc find_package()
fonctionne comme prévu.
Mais c'est un peu étrange car l'une des raisons pour lesquelles il find_package()
existe est de s'éloigner des chemins codés en dur non inter-plates-formes.
Comment cela se fait-il habituellement? Dois-je copier le cmake/
répertoire de SomeLib
dans mon projet et définir le CMAKE_MODULE_PATH
relatif?