3

私は、いくつかの cpp ファイルで Rcpp を使用するパッケージ「xyz」に取り組んでいます。R CMD INSTALL xyzR コードのみを更新する場合、変更されていないすべての共有ライブラリを再コンパイルすることなく、パッケージ ディレクトリで実行したいと考えています。--no-multiarchフラグを指定すると問題なく動作srcします。コンパイルされたオブジェクトが最初にソース ディレクトリに読み込まれ、ソースが変更されない場合は次回再利用されます。ただし、multiarch をオンにすると、R は と の 2 つのコピーを作成することにsrcsrc-i386ますsrc-x86_64常にすべてのコンパイルを再実行するものを混乱させるようR CMD INSTALLです。回避策はありますか?

(たとえば、別の方法があることは承知していますが、可能であればそれdevtools::load_allに固執したいと思いR CM INSTALLます)。

プラットフォームは MacOS 10.7 で、最新バージョンの R を使用しています。

4

1 に答える 1

4

部分的な回答があります。高速化が非常に簡単なのは、ccache を使用して提供されます。これは、すべての R コンパイルに対して有効にすることができます (たとえば、 get 、、 use などR CMD whateverを介して) を介してグローバルに実行できます。inlineattributesRStudio.R/Makevars

edd@max:~$ tail -10 .R/Makevars

VER=4.6
CC=ccache gcc-$(VER)
CXX=ccache g++-$(VER)
SHLIB_CXXLD=g++-$(VER)
FC=ccache gfortran
F77=ccache gfortran
MAKE=make -j8

edd@max:~$ 

コンパイル単位のすべてのキャッシュを処理します。

さて、それは私があまり触れていない側面に「明示的に」対処するものではありません--no-multiarch。Linux ではまだほとんどが「単一のアーキテクチャ」であるためです。これは最終的には変更されますが、まだ変更されていません。それでも私は疑っていますが、コンパイラーにキャッシングを決定させることで、あなたも最終的な効果を得ることができます.

他の側面も制御できます。たとえば、~/.R/check.Renviron特定のテストをオンまたはオフにするために使用できます。私はそれらをすべてオンにしておく傾向があります-ウィーンから厄介なグラムを取得するよりも、ここで数秒を無駄にする方が良い.

于 2012-11-18T14:04:43.257 に答える