缺少:OpenMP_C_FLAGS OpenMP_C_LIB_NAMES

新手上路,请多包涵

我正在努力在 Mac OSX 上使用 OpenMP 编译项目。错误是:

 CMake Error at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES)
Call stack most recent call first)
/usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindOpenMP.cmake:447 (find_package_handle_standard_args)
libRORPO/CMakeLists.txt:7 (find_package)

项目中搜索OpenMP相关的CMakeLists文件如下:

 # RORPO Lib

project(libRORPO)
cmake_minimum_required(VERSION 2.8)

# FIND OPENMP
find_package( OpenMP REQUIRED)
if(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()

# ADD FILES
file(GLOB_RECURSE RORPO_HEADERS *.hpp *.h)
file(GLOB_RECURSE RORPO_SOURCES *.c)

add_library(RORPO ${LIB_TYPE} ${RORPO_SOURCES} ${RORPO_HEADERS})

install( FILES ${RORPO_HEADERS} DESTINATION include/libRORPO)
install( TARGETS RORPO DESTINATION lib)

我使用 gcc-7 和 Clang-omp 验证了 OpenMP 安装是否运行良好。我已经搜索过类似的错误。回应指出,cmake 中有一个最近的包允许找到 OpenMp。我重新安装了 CMAKE 以获得最新版本,但它仍然无法正常工作。我不是 cmake 配置方面的专家..,如果您能指导我,我将不胜感激。

原文由 yankee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

我找到了一个解决方案: http ://stechschulte.net/2016/03/20/openmp-osx-cmake.html

诀窍是 cmake 必须在 CC 和 CXX 环境变量指向 clang-omp 的情况下运行:

 CC=clang-omp CXX=clang-omp++ cmake

请注意,在安装 llvm 后,必须通过以下方式定义 clang-omp 和 clang-omp++:

 brew install llvm

并创建两个符号链接:

 ln -s /usr/local/opt/llvm/bin/clang /usr/local/bin/clang-omp
ln -s /usr/local/opt/llvm/bin/clang++ /usr/local/bin/clang-omp++

原文由 yankee 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是因为 Xcode clang 不支持,使用 system clang 代替。

方法1:设置环境变量,然后运行cmake https://gist.github.com/svenevs/f00ed3898d2af6248921b63254aa8cc1

 export CC=/usr/local/opt/llvm/bin/clang
export CXX=/usr/local/opt/llvm/bin/clang++
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"

方法二:在 CMakeLists.txt 中设置环境变量

message(STATUS "set env var")
set(ENV{CC} "/usr/local/opt/llvm/bin/clang")
set(ENV{CXX} "/usr/local/opt/llvm/bin/clang++")
set(ENV{LDFLAGS} "-L/usr/local/opt/llvm/lib")
set(ENV{CPPFLAGS} "-I/usr/local/opt/llvm/include")

方法3:更改CMakeLists.txt中的var

 message(STATUS "set compipler")
set(CMAKE_C_COMPILER "/usr/local/Cellar/llvm/5.0.1/bin/clang")
set(CMAKE_CXX_COMPILER "/usr/local/Cellar/llvm/5.0.1/bin/clang++")
set(OPENMP_LIBRARIES "/usr/local/Cellar/llvm/5.0.1/lib")
set(OPENMP_INCLUDES "/usr/local/Cellar/llvm/5.0.1/include")

set(OPENMP_LIBRARIES "/usr/local/opt/llvm/lib")
link_directories(${OPENMP_LIBRARIES})

方法4。运行 cmake 时更改环境变量

cmake .. -DCC=xxx -DCXX=xxx -DLDFLAGS="" -DCPPFLAGS=""

原文由 lbsweek 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题