Как использовать библиотеку 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 ответ
Я бы попробовал несколько вещей:
Напишите трехстрочную автономную программу на C++, используя Boost, и скомпилируйте ее. Это просто для того, чтобы доказать себе, что у вас есть
-I/some/dir
флаг справа.Напишите простую функцию Rcpp и используйте, например,
sourceCpp()
скомпилировать и загрузить его.Создать файл
~/.R/Makevars
и установить-I
флаг от 1. здесь как один изCXXFLAGS
или жеCFLAGS
оба из которых будут использоватьсяR CMD ...
и поэтомуsourceCpp()
,Если ничего не помогает, создайте небольшой пакет и добавьте
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>