R не распознает мой альтернативный компилятор GCC после обновления конфигурации?

Я следовал этим инструкциям, чтобы заставить 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

Теперь это правильно активирует мой альтернативный компилятор вместо clang++. Я могу установить свой пакет с функциональностью 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, вместо того, чтобы каждый раз устанавливать из исходного кода?

Доказательство установленных инструментов командной строки разработчика

Сообщение об ошибке инструментов сборки R


person areyoujokingme    schedule 15.09.2018    source источник
comment
~/.R должен быть каталогом, ~/.R/Makevars должен быть файлом в этом каталоге. Операционная система позволит вам писать в это место.   -  person Martin Morgan    schedule 15.09.2018
comment
Спасибо за ваш комментарий. Я изменил .R на каталог и поместил то же содержимое в файл Makevars, и я получил такое же поведение. Есть мысли по поводу моих правок?   -  person areyoujokingme    schedule 16.09.2018
comment
Существует несколько различных вариантов C++ -- CXX, CXX98, CXX11, CXX14, CXX17; скорее всего, вам нужно установить правильный. При отладке упростите, удалив сторонние инструменты — установите из командной строки с помощью R_HOME/bin/R CMD INSTALL your/package   -  person Martin Morgan    schedule 17.09.2018
comment
Ваши предложения работают! Теперь я могу установить пакет из исходного кода через командную строку, однако, когда я загружаю установленный пакет в сеансе R, некоторые функции не распознаются после загрузки библиотеки. Не уверен, почему, поскольку я не получаю ошибок сборки или установки.   -  person areyoujokingme    schedule 08.10.2018