7

行列代数を含む MCMC アルゴリズムを、劇的に速度を向上させたパッケージをC++使用するように移動した R パッケージがあります。RcppEigen

ただし、LinuxではR CMD check次のようになります( R-Forgeのおかげです):NOTE

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

この警告はおそらく、C++ コードの信じられないほどのサイズ (わずか 150 行程度) によるものではなく、Linux でのみ表示されるため、Makevarsファイルを正しく構成できなかったことが原因である可能性があります。(私は一度も使用makeしたことがありませんmakefile)。
また、パッケージを に提出したときCRAN、Brian Ripley は、これに関して何か問題NOTEがあると思わせるようなことを書きましたMakevars: 「シンボルのデバッグに由来します。」

MyMakevarsは、 によって作成された標準Rcpp Makevars(以下に示す)Rcpp.package.skeletonです。

私の質問:

  • Linux でコンパイルされたライブラリのサイズを小さくするように my を構成するにはどうすればよいですかMakevars(つまり、 を削除しますNOTE)?
  • Makevarsforの魔法に入る方法についての良いリソースは何Rcppですか? (ギャラリー
    は何も見つかりませんでした。これに関するR拡張マニュアルも理解できませんでした)

私の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 
4

1 に答える 1

7

あなたは私たちが書いたものを引用します。基本的な Makefile の構文とオプションについて知りたいだけです。

src/Makevars自分が何をしているのかを理解していない限り、 をいじることはお勧めしません。何か、特に別のアーキテクチャで構築されたものを壊す可能性があります。サイモン・アーバネックは、このアドバイスについてかなり頑固です。

もちろん、Brian Ripley は半分正解ですデバッグを有効にすると、ライブラリが大きくなります。ただしCXXFLAGS、設定されることはありません。特に、-gデバッグをオンにするフラグは設定されません。したがって、それは私たちではありません。デバッグがデフォルトで有効になっている場合、他の何かがそれを有効にしました。デフォルトでは R である可能性があります。を参照してください.R/Makevars

サイズのもう 1 つの原動力は C++ テンプレートです。(Rcpp)Eigen を使用する他のパッケージと比較すると、サイズも大きい可能性があります。これは「ビジネスを行うためのコストに過ぎません」: テンプレートは、あなたが楽しめる (コーディング) パワーを提供します。

タイプミスのため編集

于 2013-05-22T10:41:46.210 に答える