Связывание c ++ против boost в пакете R - PullRequest
3 голосов
/ 24 марта 2012

Я делаю пакет R для потоков данных в сетях. Для быстроты часть кода написана на C ++, и с моей собственной реализацией графовых алгоритмов. Я хотел бы переписать свой код для использования библиотеки графов ускорения.

Что мне нужно поместить в файл Makevars, чтобы установить опцию компилятора / компоновщика для поиска надстройки? Извините, я не очень хорош с Маке.

Я работаю в среде Linux

Да, я посмотрел на RBGL, но не нашел make-файл в этом пакете

Если это имеет значение, я использую Rcpp для интерфейса кода R и C ++

1 Ответ

4 голосов
/ 24 марта 2012

Это не так сложно.По умолчанию каждый пакет Rcpp имеет значение по умолчанию src/Makevars, которое содержит

## Use the R_HOME indirection to support installations of multiple R version
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`

, где библиотека для самого Rcpp находится динамически путем запроса R. Вы просто расширяете это и добавляете

-lboost_graph

(и / или, возможно, параллельный или mt варианты).Если они установлены в необычном месте, добавьте также -L... флажки.Dito для PKG_CFLAGS для заголовков.

Вот и все.См. Руководство Writing R Extensions для получения более подробной информации о сборке пакетов R.

...