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」の最初の実行でライブラリが見つからない場合は、手動で必要なライブラリ(完全な絶対パスを設定)。ほとんどの場合、そのような解決策は私のために働きます。

また、ライブラリが1つのツールチェーン(たとえば、Intel C ++)で構築されており、プロジェクトが別のツールチェーン(たとえば、clang)で構築されている場合、ライブラリが見つからないのは、プロジェクトとライブラリ間のバイナリの非互換性が原因である可能性があります。

更新 元の問題は、CPPLIB_DIRを参照することでした。それはすべきだった:

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

Cmake ではfind_library、ライブラリ名またはライブラリ ファイル名を指定する必要があります。

ライブラリ名に「lib」プレフィックスを追加して、2 つを混在させました。したがって、またはlibsieveのいずれかに置き換えてsieveみてくださいlibsieve.so

于 2012-09-20T15:32:22.433 に答える