2017-01-03 33 views
1

我正在用Rcpp制作R包。它适用于我的机器上安装了Rtools。但是最近,我尝试在另一台机器(Windows)上本地安装我的软件包,并得到了一个编译错误。原因是在该机器上没有g ++编译器(对于Windows,g ++是与Rtools一起提供的)。安装Rtools后,它工作得很好。使用Rcpp安装R包需要Rtools(Windows)

所以问题是,如果我将它上传到CRAN,它是否仍然需要用户手动安装Rtools?或者功能install.package()检测并安装Rtools?

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

回答

7

所以问题是,如果我将它上传到CRAN,它是否仍然需要用户手动安装Rtools?

抑或功能install.package()检测并为他们安装Rtools?

什么情况是,CRAN建立,可以由Windows和MacOS用户进行安装,而不需要编译器和相关工具的预编译的二进制文件。

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

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

或见Rcpp page on CRAN

+2

很好的答案。它们是来自存储库的* source *和* binary *安装之间的区别,对于后者,您不需要这里指出的Rtools。当我计算Rcpp的反向依赖(还有一些针对误报的过滤)时,FWIW也是我现在得到899,而不是907. –

+0

我上传到了CRAN。但它显示Windows二进制文件不可用!当我通过install.package()安装它时,它只下载源包然后在本地执行。我搞砸了什么? – David

+0

通常需要几天时间才能构建Windows二进制文件并传播到镜像。 –

4

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

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

最后,有可用于寻找灵感很多这样的RCPP包...