2016-09-19 39 views
1

我已经创建了一个我想提交给CRAN的R包。它包含需要编译的代码(纯C),并且此代码依赖于libxml2库。我目前的解决方案是让Linux和Mac用户安装libxml2-dev软件包,以便他们编译和安装R源软件包。对于Windows,我创建了一个特殊的二进制R包,其中包含所需的二进制依赖关系。在阅读CRAN指南时,我发现只有源代码包可能会被上传,并且它们可能不包含任何二进制文件。如何创建具有外部依赖关系的CRAN就绪R包(libxml2)

我的问题是,那么:

  1. 它是确定适用于Mac/Linux的让用户安装的libxml2-DEV之前安装将R包,还是有其他解决办法?
  2. 我应该怎样做Windows的libxml2不是直接为最终用户安装?
+1

这个由世界上最多产的R编码器提供的软件包也具有这种依赖性。为什么不复制他所做的? https://cran.r-project.org/web/packages/xml2/index.html –

+0

感谢您的链接!我已经看过那个软件包,但是我错过了检测libxml2是否包含在Rtools中的工具/ winlibs.R,或者从这里下载它:https://github.com/rwinlib –

回答

3

正如上面提到的,你可以在xml2包做什么复制:

  • 要得到的东西在Linux/MacOS的工作,复制文件和configure/src/Makevars.in。请注意,macOS默认包含libxml2的副本,因此您可以像在Linux上一样安全地链接到-lxml2

  • 对于Windows需要从xml2复制文件src/Makevars.wintools/winlibs.R。这是一个简单的脚本,可以在Windows上构建R包时自动下载并静态链接libxml2 from rwinlib

这些构建脚本经过测试可以在任何平台上工作。

+0

感谢这些指针!使用这些文件(稍微修改我的特定软件包),我可以在Linux和Windows上轻松构建(尚未测试Mac,但我认为它会工作)。将我的软件包提交给CRAN需要更进一步。 –

相关问题