Ubuntu CMake FIND_库:链接到指定的库错误

Ubuntu CMake FIND_库:链接到指定的库错误,ubuntu,cmake,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

我已经在我的计算机上安装了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
我想安装另一个需要链接这些库的软件包,但是当我尝试
查找库(FFTW3\U库FFTW3)
查找库(FFTW3\U库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.

我通常希望看到像
/usr/lib/libfftw.so->libfftw.so.3这样的符号链接。如果这些都已准备就绪,那么您的
查找库
调用应该可以正常工作

如果不想添加符号链接,可以将呼叫更改为:

find_library(FFTW3_LIBRARIES libfftw3.so.3 /usr/lib)
find_library(FFTW3F_LIBRARIES libfftw3f.so.3 /usr/lib)

您安装了动态库,但是否安装了“开发”包?您可能需要一个名为以下内容的文件或符号链接:

libfftw3.so
您可能需要安装一个fftw3-devel(或fftw3-dev)包

此外,请尝试删除“lib”前缀和.so.3后缀:

FIND_LIBRARY(FFTW3_LIBRARIES NAMES fftw3 libfftw3)
如果不起作用,请尝试添加路径参数:

FIND_LIBRARY(FFTW3_LIBRARIES NAMES fftw3 libfftw3 PATHS /usr/lib <other paths>)
FIND_库(FFTW3_库名称FFTW3 libfftw3路径/usr/lib)
确保CMAKE_FIND_ROOT_PATH变量设置正确(假定您没有交叉编译,因此它可能为空,CMAKE将使用合理的位置查找库)

有关查找库函数的详细用法,请参见cmake手册页

最后,查看本网站,了解如何编写find_包脚本:

试试gui cmake


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

是的,这些库位于/usr/lib/中,但find_库(FFTW3_库libfftw3.so.3)find_库(FFTW3F_库libfftw3f.so.3)不起作用:(请编辑您的问题以显示您收到的错误消息,好吗?按您的代码看,该消息可能意味着找不到包含路径。您可以打印
${FFTW3\u INCLUDE\u DIR}
${FFTW3\u LIBRARIES}的值吗
请?我已经检查了FFTW3\u INCLUDE\u DIR,它被找到了,唯一的问题是FFTW3\u库…它找不到,所以我无法打印值…我更新了答案,将
/usr/lib
作为
查找库
的路径参数。你能试一试吗?你答案最后一行的链接很有用——谢谢!(我已经讲了太多次了,但还是轻松地寻找了一个简单的答案。最后我决定认真地读一遍,我没有失望。)