如何创建具有外部依赖性 libxml2 的 CRAN 就绪 R 包

How to create CRAN ready R package that has external dependency libxml2

我已经创建了一个 R 包,我想提交给 CRAN。它包含需要用纯 C 编译的代码,并且此代码依赖于 libxml2 库。

我目前的解决方案是让Linux和Mac用户安装libxml2-dev包,这样他们就可以编译安装R源码包了。

对于 Windows,我创建了一个特殊的二进制 R 包,其中包含所需的二进制依赖项。在阅读 CRAN 指南时,我看到只能上传源包,并且它们可能不包含任何二进制文件。

在这些指南之后,我的问题是:

  1. Mac/Linux 让用户在安装 R 包之前安装 libxml2-dev 是否​​可以,或者是否有其他解决方案?
  2. 对于无法直接为最终用户安装 libxml2 的 Windows,我应该怎么做?

如上所述,您只需复制 xml2 包的功能即可:

  • 要在 Linux/MacOS 上运行,请复制文件 configure/src/Makevars.in。请注意,macOS 默认包含 libxml2 的副本,因此您可以像在 Linux.

  • 上一样安全地 link 到 -lxml2
  • 对于 Windows 需要从 xml2 复制文件 src/Makevars.wintools/winlibs.R。这是一个简单的脚本,在 Windows.

  • 上构建 R 包时自动下载和静态 links libxml2 from rwinlib

这些构建脚本已经过测试,可以在(几乎)任何平台上运行。