Я пытаюсь сказать, что мой пакет использовать gcc
составить C++
код вместо clang
, Почему не мой CXX
флаги в моем Makevars
файл используется?
(Я ожидаю / надеюсь, что решение будет чем-то действительно простым, что я упустил из виду.)
Это мое понимание (см. Рекомендации) что я могу указать CXX*
флаги в любом
src/Makevars
в упаковке, или~/.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
Цитируя Дункана Мердока в 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
,
Других решений пока нет …