繁体   English   中英

在cmake中包括我自己的共享库

[英]Including my own shared library with 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

我究竟做错了什么?

我不知道为什么cmake找不到所需的库,但是我可以建议一种借助cmake-gui使其实现的方法:如果第一次“配置”运行未能找到该库,则可以将其指向手动需要的库(设置完整的绝对路径)。 大多数情况下,这种解决方案对我有用。

同样,如果库是使用一个工具链(例如Intel C ++)构建的,而您的项目是使用另一条工具链(例如clang)构建的,则找不到库的原因可能是项目与库之间的二进制不兼容。

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

find_library(CPPLIB_SIEVE_LIBRARY NAMES sieve PATHS ${CPPLIB_DIR})

Cmake find_library希望您提供库名或库文件名。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM