mercredi 22 juillet 2015

cmake g++-5: c++11 and OpenMP support

On a Mac pro I have installed g++

brew install gcc --without-multilib I have then g++-5 installed in /usr/local/bin

The compiler supports OpenMP and also c++11

The following code compiles and runs as expected:

#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;                            
}

compiling:

g++-5 -fopenmp -std=c++11 omp_code.cpp -o omp_executable

However,

cmake -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_C_COMPILER=gcc-5 ..

tells me that Could NOT find OpenMP (missing: OpenMP_CXX_FLAGS)

and The compiler /usr/local/bin/g++-5 has no C++11 support

For OpenMP I use FIND_PACKAGE(OpenMP) and for c++11 I use

include(CheckCXXCompilerFlag)                                        
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
  CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)

Any idea how to solve this? A workaround was just to put the c++11 and -fopenmp flags even if the checks fail. That worked fine. However, I would like to have a better solution.

Aucun commentaire:

Enregistrer un commentaire