# John Stechschulte

It took me far too long to figure out how to use OpenMP on OS X in a project using CMake. Hopefully this will prove useful to someone else.

## clang-omp

First, the default clang does not support OpenMP, so you need a special one:

brew install clang-omp


## CMakeLists.txt

Second, CMakeLists.txt needs a few changes:

set(CMAKE_C_COMPILER clang-omp CACHE STRING "C compiler" FORCE)
set(CMAKE_CXX_COMPILER clang-omp++ CACHE STRING "C++ compiler" FORCE)

find_package(OpenMP REQUIRED)

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}")


## cmake invocation

Finally, and this was the hardest part to figure out, cmake must be run (in a totally pristine build directory) with the CC and CXX environment variables pointing to clang-omp:

$cd /path/to/build/$ rm -rf *
$CC=clang-omp CXX=clang-omp++ cmake /path/to/source/$ make


## That’s it

I’m not certain every line added to CMakeLists.txt is necessary, but at least these steps were sufficient for me.