我的CMakeLists.txt中有以下代码,用于查找我的共享库libsieve.so
set(CPPLIB_DIR "${CMAKE_SOURCE_DIR}/../core/build")
find_library(CPPLIB_SIEVE_LIBRARY NAMES libsieve PATHS CPPLIB_DIR)
但它失败了,并且找不到我的图书馆。我有以下目录结构:
libsieve.so
CMakeLists.txt
我做错了什么?
答案 0 :(得分:1)
我不知道为什么cmake找不到所需的库但是我可以建议一种方法来帮助cmake-gui实现它:如果第一次运行“configure”找不到你可以指向的库它手动到所需的库(设置完整的绝对路径)。大多数时候这种解决方案对我有用。
此外,如果库是使用一个工具链(例如,英特尔C ++)构建的,并且您正在使用另一个工具链(例如,clang)构建项目,则找不到库的失败可能是由于项目与项目之间的二进制不兼容。图书馆。
UPD。最初的问题是引用CPPLIB_DIR。应该是:
find_library(CPPLIB_SIEVE_LIBRARY NAMES sieve PATHS ${CPPLIB_DIR})
答案 1 :(得分:0)
Cmake find_library
希望您提供库名称或库文件名。
您通过在库名称中添加“lib”前缀来混合两者。因此,您应尝试将libsieve
替换为sieve
或libsieve.so
。