1

我需要将 libavahi-client3 添加到我的项目的 cmake 依赖项中。还需要检查 libavahi-client3 和 libavahi-common3 是否存在。仅与当前库(avahi)有关的问题

尝试做这些事情:

find_package(libavahi-common3)
if(NOT libavahi-common3_FOUND)
message(ERROR " libavahi-common3 is not found")
endif(NOT libavahi-common3_FOUND)

或者这个变体:

find_library(AVAHI_COMMON_LIBRARY NAMES libavahi-common3)
if(NOT AVAHI_COMMON_LIBRARY_FOUND)
message(ERROR " libavahi-common3 is not found")
endif(NOT AVAHI_COMMON_LIBRARY_FOUND)

两者都不起作用,我搜索了 findAvahi.cmake 之类的东西,但什么也没找到。那么我应该编写自己的搜索模块还是有其他更好的选择?

4

1 回答 1

1

目前没有用于 avahi 随 CMake 一起提供的 find 脚本,这就是您的第一个示例不起作用的原因。重要的是要了解find_package只是运行外部查找脚本,它本身不会执行任何搜索。

您的第二个示例已损坏,混合了find_library和的习语find_package。请阅读find_libraryfind_path的文档,这将帮助您找到所需的库和包含路径。

如果您愿意,您可以稍后将其转换为查找脚本(查看 CMake 模块目录中的脚本以了解此类脚本的外观),这将允许您使用更紧凑的 find_package 再次定位库。请注意,编写在不同平台上运行良好的查找脚本是一项复杂的任务,需要一些研究工作才能使其正确。

于 2013-09-05T07:59:19.957 回答