使用 OpenMP 和 cmake 对 omp_get_thread_num 的未定义引用?

use*_*158 5 c++ unix makefile cmake openmp

我正在使用一个大型代码库,该代码库在make与 makefile 和 cmake 一起使用之前已成功编译。但是,既然我正在尝试将 openmp 与它一起使用,我现在遇到了错误

undefined reference to `omp_get_thread_num'
undefined reference to `omp_get_num_threads'
Run Code Online (Sandbox Code Playgroud)

我不认为这是 CMakeLists.txt 文件的问题,因为我创建了一个单独的目录并成功构建和编译了一个 helloworld OpenMP 程序。那么是什么导致了这个错误呢?

我编辑了 CMakeLists.txtproject/src/project以便包含-fopenmp所以它包含该行

  set(CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -fopenmp")
 ....
  TARGET_LINK_LIBRARIES(PROJECT  ${OpenMP_CXX_LIBRARIES} ${PROJECT_LINK_LIBS}). 
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt 已经有这些行

FIND_PACKAGE( OpenMP)
  if(OPENMP_FOUND)
     message("OPENMP FOUND")
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
  endif()
 include_directories(SYSTEM ${OpenMP_INCLUDE_PATH})
Run Code Online (Sandbox Code Playgroud)