我在R 3.0.0上使用Rcpp包。我正在尝试运行这个示例,但我不能,因为我不知道如何使用Boost。
我在目录 /Users/giorgi/boost_1_53_0 中安装了 Boost,因此我进行了设置Sys.setenv("PKG_CXXFLAGS"="-I /Users/giorgi/boost_1_53_0")
,但我不确定我是否做对了。对不起,但我对这些东西很无知!
我会尝试一些事情:
使用 Boost 编写一个三行独立的 C++ 程序,并编译它。这只是为了向自己证明你的-I/some/dir
旗帜是正确的。
编写一个简单的 Rcpp 函数并使用 egsourceCpp()
来编译和加载它。
创建一个文件~/.R/Makevars
并将-I
标志从 1. 设置为此处的一个CXXFLAGS
或CFLAGS
两个将由R CMD ...
and 因此使用sourceCpp()
。
如果其他一切都失败了,创建一个小包并添加LinkingTo: BH
为 CRAN 包 BH 提供您可以使用的 Boost 标头(一旦您安装了 BH)。
编辑,大约 1 1/2 年后
您也可以// [[Rcpp::depends(BH)]]
在此代码中使用 as 例如
#include <Rcpp.h>
#include <boost/math/common_factor.hpp> // included in BH
// [[Rcpp::depends(BH)]]
using namespace Rcpp;
// [[Rcpp::export]]
int computeGCD(int a, int b) {
return boost::math::gcd(a, b);
}
当我们同时更新 Rcpp 和 BH 时,它的构建和运行都很好:
R> library(Rcpp)
R> sourceCpp("/tmp/simpleBoost.cpp")
R> computeGCD(6, 15)
[1] 3
R>