2017-01-04 3 views
0

Это похоже на this question and answer, за исключением специализированных пакетов R. Поскольку R использует свой собственный процесс сборки, каков правильный способ принудительного восстановления с помощью Rcpp?Источник восстановления источника в R-пакете

(По причинам, в которых я не буду входить сюда, весь мой код на C++ находится за пределами/pkg/src и вызывается с помощью простой функции-обертки, которая никогда не изменяется. По этой причине при изменении важного кода , R считает, что ничего не изменилось, и объявляет страшный make: Nothing to be done for 'all'.)

ответ

1

что касается

что правильный способ, чтобы заставить восстановить с помощью Rcpp

очевидный ответ заключается в восстановлении от источника

R CMD INSTALL sourceTarballOfPackage_0.1.2.tar.gz 

Тогда возникает вопрос, где взять источник: КРАН, GitHub, GitLab, Bitbucket, ... но у нас есть помощники для этого.

Если ваш код является внутренним, то вам просто нужно восстановить обертку назвав его, и что до сих пор в src/ в пакете. Это ничем не отличается от другого пакета R (cpp), связанного с внешними ресурсами.

+0

«вам просто нужно перестроить обертку, называющую ее» - точно! И что это лучший способ сделать это? По умолчанию «R CMD INSTALL» не будет восстанавливать это, если временная метка не изменилась. – JohnA

+0

В моих пакетах есть сценарий 'cleanup' (который является стандартной, но необязательной частью), который сдувается, _inter alia_, что остается от' configure' и 'gcc' и ... Эти вещи можно изучить, посмотрев на существующие пакеты - у вас есть почти 10k на выбор! –

+0

В RStudio у вас также есть опция «clean & rebuild». Приближаясь к шагу очистки, вы, вероятно, можете просто сделать 'rm src/*. {O, so, dylib}'. –

1

Самое упрощенное решение: добавить флаг --preclean к R CMD INSTALL. В Rstudio этот флаг можно добавить в разделе «Параметры проекта» -> «Инструменты сборки» -> «Сборка и перезагрузка» - дополнительные настройки R CMD INSTALL.

Смежные вопросы