0

我的 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

我究竟做错了什么?

4

2 回答 2

1

我不知道为什么 cmake 找不到所需的库,但我可以通过帮助 cmake-gui 建议一种方法来实现它:如果“configure”的第一次运行找不到库,你可以将它指向手动需要库(设置完整的绝对路径)。大多数时候,这种解决方案对我有用。

此外,如果库是使用一个工具链(例如,英特尔 C++)构建的,而您的项目是使用另一个工具链(例如,clang)构建的,则找不到库可能是由于项目和库之间的二进制不兼容。

更新。最初的问题是引用 CPPLIB_DIR。它应该是:

find_library(CPPLIB_SIEVE_LIBRARY NAMES sieve PATHS ${CPPLIB_DIR})
于 2012-09-21T06:39:36.977 回答
0

Cmakefind_library期望您提供库名或库文件名。

您通过在库名称中添加“lib”前缀来混合两者。所以你应该尝试用libsieveorsieve替换libsieve.so

于 2012-09-20T15:32:22.433 回答