Besoin d'aide pour essayer de faire de Cmake trouver des bibliothèques tierces
J'ai actuellement un projet qui relie les deux tiers des bibliothèques. Ces bibliothèques ont à être construit par eux-mêmes et ensuite liés au projet. On est taglib et l'autre est zlib. J'ai remarqué que lorsque vous utilisez le Cmake-gui programme sur la taglib répertoire, vous devez spécifier où zlib a été construit et installé.
Mon but est d'obtenir CMake pour faire quelque chose de similaire pour mon programme. Depuis la place de ces bibliothèques sont stockés seront incompatibles comment puis-je demander à l'utilisateur de fournir le chemin d'accès pour les bibliothèques requises?
J'espère que c'est assez spécifique.
OriginalL'auteur Dr.McNinja | 2011-05-30
Vous devez vous connecter pour publier un commentaire.
Dans le cas de la ZLib, un FindZLIB.cmake est fourni avec CMake et vous pouvez simplement mettre un find_package appel dans votre cmakelists. Si nécessaire, vous pouvez apporter quelques modifications pour findzlib.cmake pour répondre à vos besoins. E. g. l'ajout de ZLIB_DIR comme un indice supplémentaire lors de la recherche de la bibliothèque. Cette ZLIB_DIR peut alors être définie par l'utilisateur.
En supposant que votre bibliothèque/exécutable s'appelle Votreprojet, vous pouvez l'utiliser comme suit.
Vous devez utiliser la même approche pour TagLib, mais devrait plutôt écrire votre propre FindTagLib.cmake (ou de recherche pour une bonne).
L'important est ici que vous donner à l'utilisateur la possibilité de définir un TagLib_DIR variable, qui vous permet de rechercher TagLib et que vous utilisez FindPackageHandleStandardArgs à l'état de la réussite ou de l'échec.
Il recherche pour FindTagLib.cmake dans CMAKE_MODULE_PATH. Je ne suis pas sûr si le répertoire principal avec CMakeLists.txt est déjà là. Si non, vous pouvez l'ajouter: set( CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} )
OriginalL'auteur André
Pas sûr à propos de l'invite interactive, mais vous pouvez toujours utiliser des variables d'environnement ou à la suite d':
de fournir cmake avec personnalisé zlib ou taglib emplacement.
N'oubliez pas de mettre à jour FindZLIB.cmake pour gérer cette variable dans FIND_PATH et FIND_LIBRARY
OriginalL'auteur Sergei Nikulov