用cmake包含我自己的共享库

时间:2012-09-20 15:05:44

标签: c++ cmake

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

我做错了什么?

2 个答案:

答案 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替换为sievelibsieve.so