我在 R 3.0.0 上使用 Rcpp 包。我正在尝试运行this example,但我不能,因为我不知道如何使用 Boost 。
我在目录/ Users / giorgi / boost_1_53_0中安装了Boost,因此我设置了Sys.setenv("PKG_CXXFLAGS"="-I /Users/giorgi/boost_1_53_0")
,但我不确定我做的是正确的。对不起,但我对这些东西一无所知!
答案 0 :(得分:12)
我会尝试一些事情:
使用Boost编写一个三行独立C ++程序,并进行编译。这只是为了向自己证明你有-I/some/dir
标志。
编写一个简单的Rcpp函数并使用例如sourceCpp()
来编译和加载它。
创建一个文件~/.R/Makevars
并将-I
标记从1.设置为CXXFLAGS
或CFLAGS
中的一个,这两个标记都将被R CMD ...
因此sourceCpp()
。
如果其他一切都失败了,请创建一个小包并添加LinkingTo: BH
作为CRAN包BH提供您可以使用的Boost标头(一旦安装BH)。
编辑,约1年半后
您也可以在此代码中使用// [[Rcpp::depends(BH)]]
#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>