Как использовать библиотеку Boost в C++ с Rcpp

Я использую пакет Rcpp на R 3.0.0. Я пытаюсь запустить этот пример, но не могу, потому что не знаю, как использовать Boost.

Я установил Boost в каталог /Users/giorgi/boost_1_53_0, поэтому я установил Sys.setenv("PKG_CXXFLAGS"="-I /Users/giorgi/boost_1_53_0") но я не уверен, что поступаю правильно. Извините, но я ничего не знаю с этим материалом!

1 ответ

Я бы попробовал несколько вещей:

  1. Напишите трехстрочную автономную программу на C++, используя Boost, и скомпилируйте ее. Это просто для того, чтобы доказать себе, что у вас есть -I/some/dir флаг справа.

  2. Напишите простую функцию Rcpp и используйте, например, sourceCpp() скомпилировать и загрузить его.

  3. Создать файл ~/.R/Makevars и установить -I флаг от 1. здесь как один из CXXFLAGS или же CFLAGS оба из которых будут использоваться R CMD ... и поэтому sourceCpp(),

  4. Если ничего не помогает, создайте небольшой пакет и добавьте LinkingTo: BH поскольку пакет CRAN BH предоставляет Boost-заголовки, которые вы можете использовать (после установки BH).

Редактировать, примерно через 1 1/2 года

Вы также можете использовать // [[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> 
Другие вопросы по тегам