注意:这是从这里开始讨论的延续: Using 3rd party header files with Rcpp。但是,问题是不同的,我认为我会把它作为自己的问题。
我有一个名为coolStuff.h
的头文件,其中包含一个函数awesomeSauce(arg1)
,我想在我的R包中的cpp文件中调用它。
包装结构:
的packageName
[人]
NAMESPACE
theCppFile.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,只需指出正确的方向。
答案 0 :(得分:4)
是一个完整的小插图致力于使用Rcpp 构建一个包,是的,你应该看一下。
Rcpp属性确实非常适合快速和简单的事情,但即使他们依赖于包:你不能做他们的Depends:比如,RcppArmadillo,如果它不是由RcppArmadillo包提供的内联插件。
所以简而言之:是的,请阅读精细的手册和/或查看(当前)CRAN上使用Rcpp并取决于它的95个软件包。
编辑:这里有一个可能的捷径:如果coolStuff.h
只是一个标题(因此没有链接到外部库),你可以在同一个目录中使用它你的来源。这有助于快速sourceCpp()
探索。但是对于包,您仍然需要执行额外的步骤,但即使其中一些已经自动化 - 请参阅Rcpp属性插图。
编辑2 :我刚刚重新阅读了您之前的问题。这个新问题毫无意义并且什么也没有增加。你上次读过并理解我们告诉你的了吗?