我正在开发一个使用R独立库(libRmath,Ubuntu / Debian软件包r-mathlib)的大型开源C ++程序。我想删除这个依赖项:我想在源代码树中包含R独立库的源代码,而不包含整个R源代码。可以这样做吗?
不幸的是,R独立库似乎与R代码的其余部分紧密耦合。在标准的R source tarball中,相同的configure脚本用于主包和独立库。此配置脚本在不同平台上无法很好地运行。我希望独立库可以作为自己的“独立”源树使用。
相关说明:我查看了Rinside库,特别是this thread。我认为我描述的方法会使分发更容易,原因有二:1)已安装R的用户不必重新配置他们的安装(并且可以维护与其默认安装不同的版本); 2)没有R的用户将不必安装它。
更新:修正了错字 - 我最初将Rinside称为Rinclude
答案 0 :(得分:3)
为您提几点:
可以这样做吗?当然可以,只需将r-mathlib的代码复制并粘贴到您的项目中即可。该库的许可是一个非常自由的LGPL。现在,它是好主意吗?我不这么认为。共享库有好处,你可以获得错误修正,更容易和更短的构建等/
似乎紧密耦合到R代码的其余部分。不,这实际上是不正确的。 r-mathlib
的重点在于你可以完全依赖它。我认为它可能仍然需要你的系统上的R头,但如果你定义MATHLIB_STANDALONE变量。例如,在我的Ubuntu框中我刚刚gcc -o /tmp/rmathTest /usr/share/doc/r-mathlib/examples/test.c -lRmath -lm
,结果二进制文件仅依赖于libRmath
,而不是libR
。
配置脚本在其他平台上无法正常运行。这是一个大胆的声明,不要在里普利教授附近任何地方。 R非常便携,而且我担心你的说法在经验基础上有点缺乏。
可以以不同的方式完成后, 以不同的方式完成。 是的,还有充足的文档。从'Writing R Extensions'和'R Admin + Inst'开始,一定会带回后续问题。
最后,如果你改变了主意,并且你确实希望在C ++中使用R,那么你也可以考虑RInside。然而,这确实产生了对R,Rcpp和RInside本身的依赖。