CMake FIND_LIBRARY:指向库错误的链接

时间:2013-03-08 03:01:27

标签: ubuntu cmake

我已经在我的电脑上安装了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.

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

答案 2 :(得分:1)

尝试 gui-cmake http://www.cmake.org/cmake/help/runningcmake.html

然后您可以手动选择所需的库。