Сборка пакета игнорирует флаги Makevars

Вопрос

Я пытаюсь сказать, что мой пакет использовать gcc составить C++ код вместо clang, Почему не мой CXX флаги в моем Makevars файл используется?

(Я ожидаю / надеюсь, что решение будет чем-то действительно простым, что я упустил из виду.)


Это мое понимание (см. Рекомендации) что я могу указать CXX* флаги в любом

  1. src/Makevars в упаковке, или
  2. ~/.R/Makevars

Однако я не могу заставить работать вариант 1, только вариант 2.

Пример сборки

Вот скриншоты, показывающие используемые мной варианты сборки. В каждом случае я показываю как Makevars и /.R/Makevars файлы, чтобы показать, какой я использую в каждом случае.

Опция 1: src/Makevars

Здесь я уточняю CXX11 = /usr/local/bin/g++-7 внутри src/Makevars, Сообщения о сборке говорят, что он строит с clang

введите описание изображения здесь

Вариант 2: ~ / .R / Makevars

Здесь я уточняю CXX11 = /usr/local/bin/g++-7 внутри ~/.R/Makevars, Сообщение сборки показывает, что оно собирается с g++

введите описание изображения здесь

Пример пакета

Я заметил это на нескольких пакетах, которые я недавно создал, используя Rcpp, но если вы хотите пример, чтобы проверить мой googlePolylines пакет здесь на GitHub.


Рекомендации

Информация о сессии

devtools::session_info()
Session info ----------------------------------------------------------------------------------------------
setting  value
version  R version 3.4.3 (2017-11-30)
system   x86_64, darwin15.6.0        ## Mac OS
ui       RStudio (1.1.414)
language (EN)
collate  en_AU.UTF-8
tz       Australia/Melbourne
date     2018-03-11

6

Решение

Цитируя Дункана Мердока в https://stat.ethz.ch/pipermail/r-package-devel/2017q4/002087.html:

Согласно разделу 1.2.1 «Использование Makevars» при написании расширений R,
R_HOME / etcR_ARCH / Makeconf включен после Makevars, так что вы
видение — это дизайн. Я считаю, что это так, что пакеты создаются с
инструменты, совместимые с теми, которые построили R. (Помните, что пакеты
предназначен для распространения в различных системах.)

Таким образом, вы можете изменить различные флаги в src/Makevars через например PKG_CXXFLAGS, но вы не можете перезаписать CXXFLAGS или же CXX сам. И нет PKG_CXX,

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]