Возможный дубликат:
Использование сторонних заголовочных файлов с Rcpp
Примечание. Это продолжение обсуждения, начатого здесь:
Использование сторонних заголовочных файлов с Rcpp. Тем не менее, вопрос достаточно отличается, так что я подумал, что поставлю его как свой собственный вопрос.
У меня есть файл заголовка coolStuff.h
которая содержит функцию awesomeSauce(arg1)
что я хотел бы вызвать в файлах cpp, которые находятся в моем пакете R.
Структура пакета:
имя пакета
NAMESPACE
Код для CppFile.cpp:
`#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double someFunctionCpp(double someInput){
double someOutput = awesomeSauce(someInput);
return someOutput;`
1) Где я должен разместить coolStuff.h
в структуре каталогов пакетов, чтобы при сборке пакета и компиляции файлов cpp был включен код из coolStuff.h.
2) Как мне вызвать этот файл в coolStuff.h
?
3) Точно так же, если я хочу позвонить otherCppFile.cpp
в theCppFile.cpp
где делать
В очередной раз благодарим за помощь. Я многому научился из последнего разговора. Если где-то есть стандартная документация, я буду рад RTFM, просто укажите мне правильное направление.
Там это целая виньетка, посвященная созданию пакета с помощью Rcpp и да, вы должны посмотреть на это.
Атрибуты Rcpp действительно хороши для быстрых и простых вещей, но даже они полагаются на пакеты: вы не можете делать их Зависит от: скажем, RcppArmadillo, если бы не встроенный плагин, предоставляемый пакетом RcppArmadillo.
Итак, вкратце: да, прочитайте хорошее руководство и / или посмотрите (в настоящее время) 95 пакетов на CRAN, которые используют Rcpp и зависит от него.
Редактировать: Здесь возможен один короткий путь: если coolStuff.h
это просто заголовок (поэтому нет ссылок на внешние библиотеки), который вы можете получить, используя его в той же директории, что и ваш источник. Это помогает быстро sourceCpp()
исследование. Но к пакет вам все еще нужно сделать дополнительные шаги, но даже некоторые из них были автоматизированы — см. виньетку атрибутов Rcpp.
Редактировать 2Я просто перечитал ваш предыдущий вопрос. это новый вопрос не имеет смысла и ничего не добавляет. Вы прочитали и поняли, что мы говорили вам в прошлый раз?
Других решений пока нет …