Rcpp:将包中的头包含到cppFunction中

时间:2015-03-05 16:52:45

标签: r rcpp

我有一个使用Rcpp的软件包。它具有不同的C++函数定义的int src/testr.h。现在,我需要生成使用Rcpp中定义的内容的cppFunction函数(使用cxxfunctionsrc/testr.h)。我怎样才能做到这一点?

我试过了,

> cxxfunction(signature(x="list") includes = c('#include "testr.h"'), body=sprintf(template, name, name))
> Rcpp::cppFunction(depends = "testr", includes = c('#include "src/testr.h"'), sprintf(template, name, name))

但是

file7086270f0da.cpp:7:10: fatal error: 'testr.h' file not found
#include "testr.h"

     ^      

1 个答案:

答案 0 :(得分:2)

快速建议:

  1. 将标题移至inst/include/testr.h;
  2. 这需要一个src/Makevars条目,例如PKG_CPPFLAGS = -I../inst/include,以便在那里进行编译。
  3. 现在将软件包安装为mypkg,您可以添加depends="mypkg",R会知道为您设置-I...
  4. 我们一直使用相同的技巧 BH和各种Rcpp*个包。