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*.cmakefichier et recherche après la bibliothèque sur le système et définit certaines variables comme SomeLib_FOUNDetc.
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*.cmakeet j'ai ajouté le répertoire SomeLiboù le FindSomeLib.cmakepeut ê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 SomeLibdans mon projet et définir le CMAKE_MODULE_PATHrelatif?