现在我只能说这些命令是pkg_search_module有一些奇怪的用法,我必须编写两次我想要的依赖项。而不是像find_package中那样只有一次
pkg_search_module(ZLIB REQUIRED zlib)
#seriously two times zlib and once in only capital case‽
find_package(ZLIB)
#much cleaner but for some odd reason find_package does not work all the time
答案 0 :(得分:17)
pkg_search_module
使用pkg-config
工具确定所请求库的位置。这在已经使用pkg-config
的系统上非常有用,因此您无需复制CMake的所有信息。请注意,此方法存在潜在的可移植性问题,因为它需要在构建计算机上正确设置pkg-config
。
find_package
是CMake自己解决同一问题的机制。为此,您需要为所请求的库(CMake已附带a couple of those,但您可以轻松编写自己的库)或所请求的库本身提供的package config script的CMake查找脚本。在任何一种情况下,您可能需要调整CMAKE_MODULE_PATH
以便CMake能够找到相应的脚本。
选择使用哪一个非常简单:
pkg_search_module
的协同效应,请使用pkg-config
。特别要注意的是,可以使用pkg_search_module
作为获取所需信息的一种方法来实现查找脚本。