2014-10-21 4 views
0

Как я могу позвонить Rcpp::sourceCpp с относительным путем к файлу C++, а не по абсолютному пути? R CMD check и testthat оба работают, когда я звоню Rcpp:sourceCpp абсолютный путь:Относительный путь к файлу для Rcpp :: sourceCpp

Rcpp::sourceCpp("/home/jeff/MiniMiniMaxUQ/src/MiniMiniMaxUQ.cpp") 

Но когда я пытаюсь с помощью system.path или относительный путь

Rcpp::sourceCpp("../src/MiniMiniMaxUQ.cpp") 

мой пакет не проходит R CMD check, потому что источник C++ файл не найден. Похоже, должен быть стандартный способ делать такие вещи, но я этого не знаю. Я бы очень признателен за помощь.

+2

Вы не должны использовать 'sourceCpp()' в пакете, в первую очередь, как @ - намекнул Кевин. –

ответ

4

Почему вы используете sourceCpp здесь для файла .cpp уже в src/? Почему бы не использовать явно .Call для вызова скомпилированного кода (который будет доступен для ваших тестов)?

Если вы действительно хотите, чтобы динамически позвонить sourceCpp вы можете посмотреть на тестовой инфраструктуры в Rcpp: https://github.com/RcppCore/Rcpp/tree/master/inst/unitTests

В .cpp файлы в cpp/ являются Rcpp::sourceCpp ред и открытые функции используются для запуска тестов в runit.* файлы.

Но обратите внимание, что это отдельные .cpp файлы (то есть, они находятся в подкаталоге inst/, а не папка src/)

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