Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建具有外部依赖项libxml2的CRAN ready R包_R_Cran_R Package - Fatal编程技术网

如何创建具有外部依赖项libxml2的CRAN ready R包

如何创建具有外部依赖项libxml2的CRAN ready R包,r,cran,r-package,R,Cran,R Package,我已经创建了一个R包,我想提交给CRAN。它包含需要用普通C语言编译的代码,该代码依赖于libxml2库 我目前的解决方案是让Linux和Mac用户安装libxml2dev包,这样他们就可以编译和安装R源代码包 对于Windows,我创建了一个特殊的二进制R包,其中包含所需的二进制依赖项。在阅读CRAN指南时,我发现只有源程序包可以上传,并且它们可能不包含任何二进制文件 在这些指导方针之后,我的问题是: Mac/Linux允许用户在安装R包之前安装libxml2 dev,还是有其他解决方案 对于

我已经创建了一个R包,我想提交给CRAN。它包含需要用普通C语言编译的代码,该代码依赖于
libxml2

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

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

在这些指导方针之后,我的问题是:

  • Mac/Linux允许用户在安装R包之前安装libxml2 dev,还是有其他解决方案
  • 对于不能直接为最终用户安装libxml2的Windows,我应该怎么做

  • 如上所述,您可以复制软件包的功能:

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

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


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

    这个由世界上最多产的R编码器开发的软件包也具有这种依赖性。为什么不照搬他的做法呢?谢谢你的链接!我已经查看了这个包,但是我错过了检查Rtools中是否包含libxml2或从这里下载libxml2的工具/winlibs.R:谢谢这些指针!使用这些文件(针对我的特定软件包稍作修改),我可以在Linux和Windows上轻松构建(尚未测试Mac,但我认为它会工作)。离向CRAN提交我的包裹又近了一大步。