【问题标题】:Does installing an R package with Rcpp require Rtools (Windows)使用 Rcpp 安装 R 包是否需要 Rtools (Windows)
【发布时间】:2017-01-03 00:26:15
【问题描述】:

我正在用 Rcpp 制作一个 R 包。它在我安装了 Rtools 的机器上运行良好。但最近,我尝试在另一台机器(Windows)上本地安装我的包,但出现编译错误。原因是在那台机器上没有 g++ 编译器(对于 Windows,Rtools 提供了 g++)。安装 Rtools 后,一切正常。

那么问题来了,如果我把它上传到 CRAN,是否还需要用户手动安装 Rtools?或者install.package()这个函数会为他们检测并安装Rtools?

另外,如果你们知道一些用 Rcpp 编写的包,请告诉我。我想看看它是如何工作的。

【问题讨论】:

    标签: r rcpp cran


    【解决方案1】:

    那么问题来了,如果我把它上传到 CRAN,是否还需要用户手动安装 Rtools?

    没有。

    或者install.package()函数会为他们检测并安装Rtools?

    没有。

    CRAN 会构建预编译的二进制文件,Windows 和 MacOS 用户无需编译器和相关工具即可安装这些文件。

    另外,如果你们知道一些用 Rcpp 编写的包,请告诉我。我想看看它是如何工作的。

    rr <- devtools::revdep("Rcpp")
    length(rr) ## 907
    

    或查看Rcpp page on CRAN

    【讨论】:

    • 好答案。它们是来自存储库的 sourcebinary 安装之间的区别,对于后者,您确实 not 需要此处指出的 Rtools。 FWIW 当我计算 Rcpp 的反向依赖(对误报进行一些过滤)时,我目前得到 899,而不是 907。
    • 我上传到 CRAN。但它显示 Windows 二进制文件不可用!当我通过 install.package() 安装它时,它只下载源包然后在本地编译。我是不是搞砸了什么?
    • 构建 Windows 二进制文件并传播到镜像通常需要几天时间。
    【解决方案2】:

    用户,例如通过install.package() 下载它的人实际上是在下载由 CRAN 维护的称为二进制文件的打包的“编译”版本。他们只需要 R 的副本。

    另一方面,开发人员,例如创建它的人需要特定于系统的开发工具。对于Windows 平台 上的用户,他们必须在其计算机上本地安装Rtools。对于ma​​cOS 上的开发人员,他们必须拥有自己的gfortran binaries and xcode developer line tools 副本。

    最后,有很多这样的 Rcpp 包可供寻找灵感...

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多