Я следовал этим инструкциям, чтобы заставить R использовать альтернативный компилятор GCC, который я установил на моей MacOS.
Сборка пакетов R с использованием альтернативного GCC
Как показывают базовые интернет-исследования (как мне сказали), компилятором по умолчанию в MacOS является clang / clang ++, которыйне работает для моих конкретных потребностей.Я установил gcc-8.1 и зависимости, чтобы включить OpenMP на моей машине.OpenMP работает, когда я запускаю gcc-8.1 с отдельным файлом tmp.c с командами pragma omp.
Однако, когда я возвращаюсь к R, чтобы попытаться запустить тот же код, используя пакет Rcpp R, я запускаюв некоторых проблемах.
Ниже приведено то, что находится в моем файле Makevars, расположенном в ~ / .R / Makevars на моей машине.
PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_CFLAGS)
PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS)
PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS)
CC=gcc-8.1
CXX=g++-8.1
CXX98=g++-8.1
CXX11=g++-8.1
CXX14=g++-8.1
CXX17=g++-8.1
Теперь это правильно активирует мой альтернативный компилятор вместолязг ++.Я могу установить свой пакет с функциональностью OpenMP, используя терминал и команды R ниже.
cd /folder/where/package/is
R CMD build packageName
R CMD build packageName_1.0.tar.gz
Однако я не могу установить пакет, используя devtools и roxygen2, что я бы предпочел.В частности, функция devtools has_devel () завершается неудачей.
has_devel()
'/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet CMD SHLIB foo.c
gcc-8.1 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/usr/local/include -fopenmp -fPIC -Wall -g -O2 -c foo.c -o foo.o
/bin/sh: gcc-8.1: command not found
make: *** [foo.o] Error 127
Error: Command failed (1)
Вот код, который я использую при попытке установить обновления с помощью devtools / roxygen2.
require(Rcpp)
require(devtools)
require(roxygen2)
setwd("/folder/where/package/is")
compileAttributes(pkgdir = "/folder/where/package/is")
install("packageName/")
Я подозреваю, что всплывающее окноЯ понял, что RStudio напрямую связан с тем, что функция has_devel () не может быть TRUE.Если я вернусь к использованию компилятора по умолчанию, clang ++ (удалив мои Makevars в ~ / .R / Makevars), has_devel () вернет TRUE, а RStudio не спросит, хочу ли я установить инструменты командной строки разработчика.Как обойти этот сбой, установив пакет, который я разрабатываю, используя devtools вместо того, чтобы каждый раз устанавливать его из исходного кода?