5

私はすでにFFTW3ライブラリをコンピュータにインストールしており、次のファイルが/ usr/libにあります。

libfftw3f.so.3          libfftw3l_threads.so.3
libfftw3f.so.3.3.0      libfftw3l_threads.so.3.3.0
libfftw3f_threads.so.3      libfftw3.so.3
libfftw3f_threads.so.3.3.0  libfftw3.so.3.3.0
libfftw3l.so.3          libfftw3_threads.so.3
libfftw3l.so.3.3.0      libfftw3_threads.so.3.3.0

これらのライブラリをリンクする必要がある別のパッケージをインストールしたいのですが、試してみる FIND_LIBRARY(FFTW3_LIBRARIES fftw3)FIND_LIBRARY(FFTW3_LIBRARIES fftw3f)、ライブラリが見つかりません。

どうすればこれを解決できますか?ありがとう!

CMakeLists.txtのコード:

FIND_PATH(FFTW3_INCLUDE_DIR fftw3.h)
IF(FFLD_HOGPYRAMID_DOUBLE)
  FIND_LIBRARY(FFTW3_LIBRARIES libfftw3.so.3)
ELSE()
  FIND_LIBRARY(FFTW3_LIBRARIES libfftw3f.so.3)
ENDIF()
#IF(NOT FFTW3_INCLUDE_DIR OR NOT FFTW3_LIBRARIES)
IF(NOT FFTW3_INCLUDE_DIR OR NOT FFTW3_LIBRARIES)
  MESSAGE(FATAL_ERROR "Could not find fftw3.")
ENDIF()

エラーメッセージ:

CMake Error at CMakeLists.txt:52 (MESSAGE):
  Could not find fftw3.
4

3 に答える 3

3

ダイナミックライブラリがインストールされていますが、「開発」パッケージがインストールされていますか?おそらく、次のような名前のファイルまたはシンボリックリンクが必要です。

libfftw3.so

fftw3-devel(またはfftw3-dev)パッケージをインストールする必要がある場合があります。

また、「lib」プレフィックスと.so.3サフィックスを削除してみてください。

FIND_LIBRARY(FFTW3_LIBRARIES NAMES fftw3 libfftw3)

それでも問題が解決しない場合は、PATHS引数を追加してみてください。

FIND_LIBRARY(FFTW3_LIBRARIES NAMES fftw3 libfftw3 PATHS /usr/lib <other paths>)

CMAKE_FIND_ROOT_PATH変数が正しく設定されていることを確認してください(おそらくクロスコンパイルしていないので、空である可能性が高く、cmakeはライブラリを見つけるために適切な場所を使用します)。

find_library関数の詳細な使用法については、cmakeのマニュアルページを参照してください。

最後に、find_packageスクリプトの記述方法については、次のサイトを参照してください: http ://www.cmake.org/Wiki/CMake:How_To_Find_Libraries

于 2013-03-26T16:45:45.107 に答える
1

私は通常、のようなシンボリックリンクが表示されることを期待します/usr/lib/libfftw.so -> libfftw.so.3。それらが適切に配置されていれば、find_library通話は正常に機能するはずです。

シンボリックリンクを追加したくない場合は、呼び出しを次のように変更できます。

find_library(FFTW3_LIBRARIES libfftw3.so.3 /usr/lib)
find_library(FFTW3F_LIBRARIES libfftw3f.so.3 /usr/lib)
于 2013-03-09T01:13:55.363 に答える
1

gui-cmakehttp: //www.cmake.org/cmake/help/runningcmake.htmlを試してください。

次に、必要なライブラリを手動で選択できます。

于 2013-07-24T19:26:52.867 に答える