Rcpp:将包中的 header 包含到 cppFunction 中
Rcpp: Include header from package into cppFunction
我有一个使用 Rcpp
的包。它有不同的 C++
函数定义 int src/testr.h
。现在在某些时候我需要生成 Rcpp
函数(使用 cppFunction
或 cxxfunction
),这些函数使用 src/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"
^
快速建议:
- 将页眉移至
inst/include/testr.h
;
- 这需要一个
src/Makevars
条目,例如 PKG_CPPFLAGS = -I../inst/include
才能在那里查看编译。
- 现在安装的包为
mypkg
,您可以添加一个 depends="mypkg"
,R 将知道为您设置一个 -I...
。
我们一直使用相同的技巧,例如BH 和各种 Rcpp*
包。
我有一个使用 Rcpp
的包。它有不同的 C++
函数定义 int src/testr.h
。现在在某些时候我需要生成 Rcpp
函数(使用 cppFunction
或 cxxfunction
),这些函数使用 src/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"
^
快速建议:
- 将页眉移至
inst/include/testr.h
; - 这需要一个
src/Makevars
条目,例如PKG_CPPFLAGS = -I../inst/include
才能在那里查看编译。 - 现在安装的包为
mypkg
,您可以添加一个depends="mypkg"
,R 将知道为您设置一个-I...
。
我们一直使用相同的技巧,例如BH 和各种 Rcpp*
包。