gpt4 book ai didi

r - 如何改进 Rcpp (RcppEigen) 包的 Makevars 文件?

转载 作者:行者123 更新时间:2023-12-04 14:46:34 27 4
gpt4 key购买 nike

我有一个 R 包,我将包含矩阵代数的 MCMC 算法移动到了 C++使用 RcppEigen包大大提高了速度。

然而,R CMD check给出以下 NOTE在 Linux ( Thanks to R-Forge ) 上:

* checking installed package size ... NOTE
installed size is 6.6Mb
sub-directories of 1Mb or more:
libs 6.1Mb

这个警告可能不是由我的 C++ 代码( which is only around 150 lines )的惊人大小引起的,因为它只出现在 Linux 上,但可能是因为我无法正确配置 Makevars文件。 (我以前从未使用过 makemakefile)。
同样在将包提交到 CRAN 时, Brian Ripley 写了一些关于此的内容 NOTE这让我期待它是 Makevars问题:“它来自调试符号。”

我的 Makevars是标准 Rcpp Makevars (下面给出)由 Rcpp.package.skeleton 制作.

我的问题:
  • 如何配置我的 Makevars以某种方式减少 Linux 上编译库的大小(即摆脱 NOTE )?
  • 关于如何进入 Makevars 的魔力有哪些好的资源?为 Rcpp ?
    (我在 Gallery 中没有找到任何东西,而 R extension manual on this 对我来说也是无法理解的)

  • 我的 Makevars :
    ## Use the R_HOME indirection to support installations of multiple R version
    PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
    PKG_CPPFLAGS = -I. -I../inst/include

    我的 Makevars.win :
    ## This assume that we can call Rscript to ask Rcpp about its locations
    ## Use the R_HOME indirection to support installations of multiple R version
    PKG_LIBS = $(shell $(R_HOME)/bin/Rscript.exe -e "Rcpp:::LdFlags()")
    PKG_CPPFLAGS = -I. -I../inst/include

    最佳答案

    你引用我们写的。这里没有什么特别的:你只是想了解基本的 Makefile 语法和选项。

    摆弄 src/Makevars ,除非您了解自己在做什么,否则不建议这样做。您可能会破坏某些东西,尤其是在另一种架构上的构建。 Simon Urbanek 对这个建议非常坚定。

    Brian Ripley 当然对了一半:如果您启用了调试,库会更大。但是CXXFLAGS从未设置,尤其是没有 -g标志设置为打开调试。所以它不是我们:如果默认情况下启用调试,则其他原因将其打开。默认情况下可能是R。查看您的 .R/Makevars .

    大小的另一个驱动程序是 C++ 模板。与其他使用 (Rcpp)Eigen 的包相比,它们也可能很大。这“只是做生意的成本”:模板为您提供了您喜欢的(编码)能力。

    针对错别字进行了编辑

    关于r - 如何改进 Rcpp (RcppEigen) 包的 Makevars 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689561/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com