4

我在R 3.0.0上使用Rcpp包。我正在尝试运行这个示例,但我不能,因为我不知道如何使用Boost

我在目录 /Users/giorgi/boost_1_53_0 中安装了 Boost,因此我进行了设置Sys.setenv("PKG_CXXFLAGS"="-I /Users/giorgi/boost_1_53_0"),但我不确定我是否做对了。对不起,但我对这些东西很无知!

4

1 回答 1

16

我会尝试一些事情:

  1. 使用 Boost 编写一个三行独立的 C++ 程序,并编译它。这只是为了向自己证明你的-I/some/dir旗帜是正确的。

  2. 编写一个简单的 Rcpp 函数并使用 egsourceCpp()来编译和加载它。

  3. 创建一个文件~/.R/Makevars并将-I标志从 1. 设置为此处的一个CXXFLAGSCFLAGS两个将由R CMD ...and 因此使用sourceCpp()

  4. 如果其他一切都失败了,创建一个小包并添加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> 
于 2013-04-21T23:03:27.490 回答