I am developing an R package on Mac OSX with some low level `C/C++` code and `openMP` support. The `C++` code is written using `Rcpp` package. My global ''Makevars'' file is placed under `~/.R/` folder. The file looks like following.

```
CC=clang-omp
CXX=clang-omp++

PKG_CFLAGS=Wall -pedantic
PKG_CFLAGS= -fopenmp
PKG_CXXFLAGS= -fopenmp
PKG_LIBS= -fopenmp -lgomp

```

Everything works great under this configuration! 

However, now I want to build package-specific `Makevars` file for its own compilation to make the package portable. What I tried was simply move the global `Makevars` file into my R pakcage `src` folder. However, the compiler complained about that it cannot find the openMP header file `omp.h`:

```
** libs
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/bigmemory/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BH/include"  -fopenmp -fPIC  -Wall -mtune=core2 -g -O2  -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.
make: *** [RcppExports.o] Error 1
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/bigmemory/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BH/include"  -fopenmp -fPIC  -Wall -mtune=core2 -g -O2  -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.
make: *** [RcppExports.o] Error 1

```

As you can see, the compilers become `clang` and `clang++`, but not what specified in the `Makevars` files: `CC=clang-omp` and `CXX=clang-omp++`.

**Question 1:** So how could I fix this issue and build a `Makevars` file within the R package?

Another thing is that, I noticed from [Writing R extensions](https://cran.r-project.org/doc/manuals/r-release/R-exts.html#OpenMP-support) that,

```
For example, a package with C code written for OpenMP should have in src/Makevars the lines

PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS)
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)

```

**Question 2:** What is the difference between, for example, macro `$(SHLIB_OPENMP_CFLAGS)` and flag `-fopenmp`? which one under which circumstance should I use? I tried to replace the flags with the macros, but still cannot fix the issue.