C++ 如何使用OpenMP在MSVC 2015上工作
我试图让clang 5.0.0为Visual Studio 2015工作,因为我需要OpenMP 3.0功能。我安装了clang编译器(不是没有任何openmp支持的vs2015版本)并使用cmake:C++ 如何使用OpenMP在MSVC 2015上工作,c++,visual-studio-2015,clang,openmp,C++,Visual Studio 2015,Clang,Openmp,我试图让clang 5.0.0为Visual Studio 2015工作,因为我需要OpenMP 3.0功能。我安装了clang编译器(不是没有任何openmp支持的vs2015版本)并使用cmake: cmake_minimum_required(VERSION 2.8.10) project(myproject) find_package(OpenMP) if (OPENMP_FOUND) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_
cmake_minimum_required(VERSION 2.8.10)
project(myproject)
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()
include_directories("include")
add_library(libFoo STATIC Foo.cpp)
install(TARGETS Foo libFoo LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
当我现在尝试配置带有或不带工具链的MSVC 14 2015 Win64
构建LLVM-vs2014
时,我总是收到一个错误,即找不到OpenMP:
The C compiler identification is Clang 5.0.0
The CXX compiler identification is Clang 5.0.0
Check for working C compiler: D:/Program Files/LLVM/msbuild-bin/cl.exe
Check for working C compiler: D:/Program Files/LLVM/msbuild-bin/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: D:/Program Files/LLVM/msbuild-bin/cl.exe
Check for working CXX compiler: D:/Program Files/LLVM/msbuild-bin/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES) (found version "1.0")
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES) (found version "1.0")
Configuring done
使用的编译器似乎是正确的(已安装的clang,而不是Microsoft版本),它自动检测clang cl二进制文件,但OpenMP失败。
我试图用“指定本机编译器”手动指定编译器,并得到相同的结果。它甚至选择了clang cl版本而不是clang++
相关答案,但不能解决问题:
- -最近的clang包含libomp.lib和libiomp5.dll
OpenMP_CXX_FLAGS="-Xclang -fopenmp"
OpenMP_C_FLAGS="-Xclang -fopenmp"
并确保链接库中有libomp.lib
-Xclang
告诉铿锵二进制文件,以下选项是铿锵格式,而不是MSVC格式,并且-fopenmp只是常用的OpenMP标志。不过,以任何其他方式设置都不起作用
一般模式是:
-Xclang-clangFlag1-Xclang-clangFlag2…
。也就是说,每个铿锵风格的标志都需要自己的-Xclang
,这些标志位于cmake选项中,它适用于VS 2015.Yep。添加-Xclang-fopenmp
有效。我不明白为什么他们没有将VS的OpenMP映射到clang-cl.exe
中。