Установка R-пакета из GitHub: изменяется, когда R-пакет находится в подкаталоге, а C ++-код - в корне. - PullRequest
2 голосов
/ 01 октября 2019

Сбой установки моего пакета R из GitHub при использовании функции devtools::install_github, когда пакет находится в подкаталоге, а код C ++ находится в корневом каталоге.

Репозиторий можно найти здесь: https://github.com/Blunde1/gbtorch

Основная ветвь имеет код C ++, расположенный в папке пакета R. Однако, поскольку я хочу собрать пакет Python позже, имеет смысл переместить заголовочные файлы C ++ в корневой каталог. Я изменил это в новой ветке: https://github.com/Blunde1/gbtorch/tree/Restructuring-Header-Files

Локально, это работает после изменения файлов Makevars с изменением PKG_CPPFLAGS = -I../inst/include на PKG_CPPFLAGS = -I../../inst/include Поэтому я предполагаю, что клон и ручная установка должны работать, ноЯ хочу, чтобы это было легко, и надеюсь, что установка с использованием devtools::install_github будет возможна.

Я, скорее всего, ничего не знаю, так как это не новая проблема. Я исследовал (читай "googled") и обнаружил, что команда devtools действительно подумала об этом: https://github.com/r-lib/devtools/issues/64, что привело к аргументу subdir в devtools::install_github.

Здесь, похоже, проблемарешено, но все же, решение с subdir не работает для меня:

Это работает: ветка master, C ++, находящаяся в папке R-пакета

devtools::install_github("Blunde1/gbtorch", ref="master", subdir = "R-package")

Это не удалось: новыйветвь разработки, код C ++ не находится в папке R-пакета

devtools::install_github("Blunde1/gbtorch", ref="Restructuring-Header-Files", subdir = "R-package")

Приведенная выше команда выдает следующую ошибку:

gbtorch.cpp:8:23: fatal error: gbtorch.hpp: No such file or directory #include "gbtorch.hpp"

Если расположение заголовочных файловпуть не указан в файле Makevars, тогда где? Возможно ли, что какой-нибудь файл configure может сработать?

Есть идеи, как это исправить? Любая помощь по этому вопросу с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...