在Mac上,我安装了g ++
brew install gcc --without-multilib
然后我在/usr/local/bin
编译器支持OpenMP和c ++ 11
以下代码按预期编译并运行:
#include <iostream>
int main(int argc, const char **argv)
{
auto i = 42;
int arr[] = {1,2,3,4,5};
for(int& e : arr)
{
e = e*e;
}
#pragma omp parallel
{
std::cout << "Hello OpenMP!\n";
}
return 0;
}
编译:
g++-5 -fopenmp -std=c++11 omp_code.cpp -o omp_executable
然而,
cmake -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_C_COMPILER=gcc-5 ..
告诉我Could NOT find OpenMP (missing: OpenMP_CXX_FLAGS)
和The compiler /usr/local/bin/g++-5 has no C++11 support
对于OpenMP我使用FIND_PACKAGE(OpenMP)
而对于c ++ 11,我使用
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
知道如何解决这个问题吗?即使检查失败,解决方法也只是放置c ++ 11和-fopenmp
标志。这工作得很好。但是,我想有一个更好的解决方案。