我正在使用R独立库(libRmath,Ubuntu / Debian软件包r-mathlib)开发大型开源C ++程序。我想删除这种依赖关系:我想将R独立库中的源代码包括在我的源树中,而没有整个R源代码。能做到吗?

不幸的是,R独立库似乎与R代码的其余部分紧密相连。在标准R源tarball中,相同的configure脚本用于主软件包和独立库。此配置脚本无法在不同平台上正常运行。我希望独立库可以作为其自己的“独立”源树使用。

相关说明:我已经看过Rinside库,尤其是通过this thread。我认为我正在描述的方法将使分发变得容易,原因有两个:1)已经安装了R的用户将不必重新配置其安装(并且可以将其他版本保留为其默认安装); 2)没有R的用户将不必安装它。

更新:修正了一个错字-我最初将Rinside称为Rinclude

最佳答案

几点要点:


能做到吗?当然可以,只需将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非常易于移植,我担心您的主张这里缺乏经验基础。


您所追求的目标可以通过不同的方式来完成,并且可以通过不同的方式来完成。
是的,还有足够的文档。从“编写R扩展名”和“ R Admin +实例”开始,然后再返回后续问题。

最后,如果您改变主意并且确实希望在C ++中使用R,则可能还需要考虑RInside。但是,这确实会在R,Rcpp和RInside本身上产生缺陷。

关于c++ - 在C++源代码树中包含R独立库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5393257/

10-12 17:33