如何在cmake中使用FFTW库? 我有C++代码,使用FFTW 3.3.4。Ubuntu 16.04,cmake版本3.7.2 $ locate *fftw*.so /usr/lib/libsfftw.so /usr/lib/libsfftw_mpi.so /usr/lib/libsfftw_threads.so /usr/lib/libsrfftw.so /usr/lib/libsrfftw_mpi.so /usr/lib/libsrfftw_threads.so /usr/lib/x86_64-linux-gnu/libfftw3.so /usr/lib/x86_64-linux-gnu/libfftw3_mpi.so /usr/lib/x86_64-linux-gnu/libfftw3_omp.so /usr/lib/x86_64-linux-gnu/libfftw3_threads.so /usr/lib/x86_64-linux-gnu/libfftw3f.so /usr/lib/x86_64-linux-gnu/libfftw3f_mpi.so /usr/lib/x86_64-linux-gnu/libfftw3f_omp.so /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so /usr/lib/x86_64-linux-gnu/libfftw3l.so /usr/lib/x86_64-linux-gnu/libfftw3l_mpi.so /usr/lib/x86_64-linux-gnu/libfftw3l_omp.so /usr/lib/x86_64-linux-gnu/libfftw3l_threads.so /usr/lib/x86_64-linux-gnu/libfftw3q.so /usr/lib/x86_64-linux-gnu/libfftw3q_omp.so /usr/lib/x86_64-linux-gnu/libfftw3q_threads.so $ locate fftw3.h /usr/include/fftw3.h
我可以这样编译它:如何在cmake中使用FFTW库? 我有C++代码,使用FFTW 3.3.4。Ubuntu 16.04,cmake版本3.7.2 $ locate *fftw*.so /usr/lib/libsfftw.so /usr/lib/libsfftw_mpi.so /usr/lib/libsfftw_threads.so /usr/lib/libsrfftw.so /usr/lib/libsrfftw_mpi.so /usr/lib/libsrfftw_threads.so /usr/lib/x86_64-linux-gnu/libfftw3.so /usr/lib/x86_64-linux-gnu/libfftw3_mpi.so /usr/lib/x86_64-linux-gnu/libfftw3_omp.so /usr/lib/x86_64-linux-gnu/libfftw3_threads.so /usr/lib/x86_64-linux-gnu/libfftw3f.so /usr/lib/x86_64-linux-gnu/libfftw3f_mpi.so /usr/lib/x86_64-linux-gnu/libfftw3f_omp.so /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so /usr/lib/x86_64-linux-gnu/libfftw3l.so /usr/lib/x86_64-linux-gnu/libfftw3l_mpi.so /usr/lib/x86_64-linux-gnu/libfftw3l_omp.so /usr/lib/x86_64-linux-gnu/libfftw3l_threads.so /usr/lib/x86_64-linux-gnu/libfftw3q.so /usr/lib/x86_64-linux-gnu/libfftw3q_omp.so /usr/lib/x86_64-linux-gnu/libfftw3q_threads.so $ locate fftw3.h /usr/include/fftw3.h,c++,cmake,fftw,C++,Cmake,Fftw,我可以这样编译它: g++ main.cpp -o main -lfftw3 但我对cmake有个问题 这是我的CMakeLists.txt: cmake_minimum_required(VERSION 3.5.1) project (main) SET(CMAKE_C_COMPILER gcc) SET(CMAKE_CXX_COMPILER g++) file(GLOB SOURCES "*.cpp") SET(CMAKE_CXX_FLAGS "-lm -lfftw3") SET(CMA
g++ main.cpp -o main -lfftw3
但我对cmake有个问题
这是我的CMakeLists.txt:
cmake_minimum_required(VERSION 3.5.1)
project (main)
SET(CMAKE_C_COMPILER gcc)
SET(CMAKE_CXX_COMPILER g++)
file(GLOB SOURCES "*.cpp")
SET(CMAKE_CXX_FLAGS "-lm -lfftw3")
SET(CMAKE_C_FLAGS "-lm -lfftw3")
INCLUDE_DIRECTORIES(/usr/include)
LINK_DIRECTORIES(/usr/lib/x86_64-linux-gnu)
add_library(fftw3 STATIC IMPORTED)
set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)
add_executable(main ${SOURCES})
cmake . && make
给予
undefined reference to `fftw_malloc'
其他fftw函数也是如此。命令
add\u library
将在项目中创建一个库。我想那不是你想要的
命令:g++main.cpp-o main-lfftw3
将可执行文件链接到fftw库。在CMake中,您可以通过以下方式复制链接:
add_executable(main ${SOURCES})
target_link_libraries(main fftw3)
文档:注意:add_可执行文件命令位于链接之前,这一点很重要。
享受FFTW的乐趣:)它很有效,谢谢。有没有可能用它做同样的工作,谢谢。是否可以对find_包(FFTW)执行相同的操作?实际上,cmake中没有FindFFTW模块。要使用find_package(FFTW),你应该自己写或者在互联网上找到一个好的。我将它保持原样。我将它用于MPI-find_包(MPI),这就是问题的原因。好的;)可能重复的