2 votes

Trouver libavahi avec cmake

Je dois ajouter libavahi-client3 à la dépendance cmake de mon projet. J'ai également besoin de vérifier l'existence de libavahi-client3 et libavahi-common3. Problèmes seulement avec la bibliothèque actuelle (avahi)

Essayer de faire ces choses:

find_package(libavahi-common3)
if(NOT libavahi-common3_FOUND)
message(ERROR "libavahi-common3 n'est pas trouvé")
endif(NOT libavahi-common3_FOUND)

Ou cette variante:

find_library(AVAHI_COMMON_LIBRARY NAMES libavahi-common3)
if(NOT AVAHI_COMMON_LIBRARY_FOUND)
message(ERROR "libavahi-common3 n'est pas trouvé")
endif(NOT AVAHI_COMMON_LIBRARY_FOUND)

Les deux ne fonctionnent pas, j'ai cherché quelque chose comme findAvahi.cmake, mais je n'ai rien trouvé. Dois-je écrire mon propre module de recherche ou y a-t-il une meilleure option ?

2voto

ComicSansMS Points 12749

Il n'y a actuellement aucun script de recherche pour avahi intégré à CMake, c'est pourquoi votre premier exemple ne fonctionne pas. Il est important de comprendre que find_package exécute simplement un script de recherche externe, il ne recherche pas par lui-même.

Votre deuxième exemple est cassé, mélangeant des idiomes de find_library et find_package. Veuillez consulter la documentation de find_library et find_path qui vous aideront à trouver les bibliothèques et chemins d'inclusion requis.

Si vous le souhaitez, vous pourrez transformer cela en un script de recherche plus tard (consultez les scripts dans le répertoire de modules de CMake pour avoir une idée de ce à quoi un tel script devrait ressembler), ce qui vous permettra d'utiliser la commande find_package plus compacte pour retrouver la bibliothèque. Notez que rédiger un script de recherche qui fonctionne raisonnablement bien sur différentes plates-formes est une tâche complexe qui nécessitera un effort de recherche pour le réussir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X