How to build a R package which use Rcpp with external c++ libraries?

问题描述 投票:0回答:3

例如boost,我可以在哪里指定以下内容:

1.External c++ header file include path 
2.External c++ source file 
3.External c++ link library file path
rcpp
3个回答
14
投票

中所述,一切都进入
src/Makevars


4
投票

Dirk的论文《Thirteen Simple Steps for Creating An R Package with an External C++ Library》给出了例子

src/Makevars

CXX_STD = CXX11
PKG_CFLAGS = -I. -DGMP -DSKIP_MAIN
PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) -lgmpxx -lgmp

如您所见,在此文件的

PKG_LIBS
中指定了其他库。
src/Makevars
方法假定您使用标准包布局将 C++ 代码合并到您的项目中,如
Rcpp.package.skeleton()
生成的那样,具有
NAMESPACE
DESCRIPTION
等等。

根据上面 Dirk 的评论,当使用

sourceCpp
函数合并 C++ 代码时,目前无法指定外部库,因为该函数提供了一个应该是多平台的接口。


0
投票

在我工作的地方,研究人员使用 Rcpp 不是为了创建包,而是将非标准位置的 C++ 脚本合并到他们在 Linux 操作系统中“动态”使用 R 的工作中。我们想包含多个外部 C++ 库,但 'Sys.setenv("PKG_LIBS = -lglpk -lsuperlu") 不起作用。为了让 Rcpp 找到它们,我们必须为路径添加“-L”并将它们放在“-l”语句之前:

Sys.setenv("PKG_LIBS = -L/PATH/TO/GLPK/LIB -L/PATH/TO/SUPERLU -lglpk -lsuperlu")

© www.soinside.com 2019 - 2024. All rights reserved.