我的 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
我究竟做错了什么?
我不知道为什么 cmake 找不到所需的库,但我可以通过帮助 cmake-gui 建议一种方法来实现它:如果“configure”的第一次运行找不到库,你可以将它指向手动需要库(设置完整的绝对路径)。大多数时候,这种解决方案对我有用。
此外,如果库是使用一个工具链(例如,英特尔 C++)构建的,而您的项目是使用另一个工具链(例如,clang)构建的,则找不到库可能是由于项目和库之间的二进制不兼容。
更新。最初的问题是引用 CPPLIB_DIR。它应该是:
find_library(CPPLIB_SIEVE_LIBRARY NAMES sieve PATHS ${CPPLIB_DIR})
Cmakefind_library
期望您提供库名或库文件名。
您通过在库名称中添加“lib”前缀来混合两者。所以你应该尝试用libsieve
orsieve
替换libsieve.so
。