C++11 cmake g++-5:c++;11和OpenMP支持

C++11 cmake g++-5:c++;11和OpenMP支持,c++11,cmake,openmp,C++11,Cmake,Openmp,在Mac pro上,我安装了g++ brew安装gcc——不带多库 然后我在/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

在Mac pro上,我安装了g++


brew安装gcc——不带多库
然后我在
/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;                            
}
但是,

cmake -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_C_COMPILER=gcc-5 ..
告诉我
找不到OpenMP(缺少:OpenMP\U CXX\U标志)

编译器/usr/local/bin/g++-5不支持C++11

对于OpenMP,我使用
查找包(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
标志。效果很好。但是,我希望有一个更好的解决方案。

在运行
cmake-DCMAKE\u CXX\u COMPILER=g++-5-DCMAKE\u C\u COMPILER=gcc-5..之前,您是否刮取了构建目录?这可能与“是”中的问题相同。看来就是这样了。它现在可以工作了。顺便说一下,您可以使用
设置目标属性(一些目标属性CXX\U STANDARD 11 CXX\U EXTENSIONS FALSE CXX\U STANDARD\U REQUIRED TRUE)
对C++11进行更健壮的检查。需要CMake 3.1+。在运行
CMake-DCMAKE\u CXX\u COMPILER=g++-5-DCMAKE\u C\u COMPILER=gcc-5..
之前,是否已清除生成目录?这可能与“是”中的问题相同。看来就是这样了。它现在可以工作了。顺便说一下,您可以使用
设置目标属性(一些目标属性CXX\U STANDARD 11 CXX\U EXTENSIONS FALSE CXX\U STANDARD\U REQUIRED TRUE)
对C++11进行更健壮的检查。需要CMake 3.1+。
include(CheckCXXCompilerFlag)                                        
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
  CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)