我正在尝试使用OpenMP进行编译.我CMakeLists.txt包含这条线
find_package(OpenMP REQUIRED)
和CMake错误
CMake Error at /opt/ros/groovy/share/catkin/cmake/catkinConfig.cmake:72 (find_package):
Could not find a configuration file for package openmp.
Set openmp_DIR to the directory containing a CMake configuration file for
openmp. The file will have one of the following names:
openmpConfig.cmake
openmp-config.cmake
Run Code Online (Sandbox Code Playgroud)
检查我的文件系统,我看到我有/usr/share/cmake-2.8/Modules/FindOpenMP.cmake但没有openmpConfig.cmake或openmp-config.cmake.我需要做些什么来解决这个问题?
iNF*_*TEi 28
即使在2.x版本中,CMake也有一个FindOpenMP模块.见http://www.cmake.org/cmake/help/v3.0/module/FindOpenMP.html
所以我会这样做:
OPTION (USE_OpenMP "Use OpenMP" ON)
IF(USE_OpenMP)
FIND_PACKAGE(OpenMP)
IF(OPENMP_FOUND)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
ENDIF()
ENDIF()
Run Code Online (Sandbox Code Playgroud)
Lar*_*dua 13
根据Modern CMake在线书籍,这是使用 CMake 配置 OpenMP 支持的方式:
find_package(OpenMP)
if(OpenMP_CXX_FOUND)
target_link_libraries(MyTarget PUBLIC OpenMP::OpenMP_CXX)
endif()
Run Code Online (Sandbox Code Playgroud)
您绝对不应该做的是手动添加标志-fopenmp(如接受的答案建议),因为这可能不可移植。
OpenMp不是一个包,如果它是支持的,它作为你的编译器的一部分.尝试设置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS相应.例如:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")在使用时激活OpenMP用于编译C源gcc.对于其他编译器,您应首先检测编译器,然后添加适当的标志
| 归档时间: |
|
| 查看次数: |
16533 次 |
| 最近记录: |