簡體   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