2012-11-18 25 views
3

我正在使用包含幾個cpp文件的Rcpp的軟件包「xyz」。 當我只更新R代碼時,我想在軟件包目錄上運行R CMD INSTALL xyz,而無需重新編譯所有未更改的共享庫。如果我指定--no-multiarch標誌,則工作正常:第一次使用編譯對象填充源目錄src,並且如果源不更改,則下次重新使用它們。然而,隨着多元化,R決定製作src,src-i386src-x86_64的兩個副本。這似乎混淆了R CMD INSTALL其中總是重新運行所有編譯。有什麼解決方法嗎?使用多元化開發期間快速安裝軟件包

(我知道有其他方法,例如devtools::load_all,但如果可能,我寧願堅持R CM INSTALL)。

該平臺是MacOS的10.7,和我有最新版本的R.

+0

我對你可能得到的答案很感興趣。 –

回答

4

的我對你了部分答案。一個真正爲加速容易是通過使用ccache,你可以啓用所有的R編譯(例如,通過R CMD whatever從而也越來越inlineattributesRStudio使用,...)在全球範圍通過.R/Makevars提供:

[email protected]:~$ 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 

[email protected]:~$ 

它負責編譯單元的所有緩存。

現在,這並沒有「明確」解決--no-multiarch方面的問題,因爲我們在Linux上大多仍然是「單一的拱形」,所以我不會那麼擔心。這最終會改變,但還沒有。然而,我懷疑,但讓編譯器決定緩存你也會得到淨效應。

其他方面也可以控制,例如~/.R/check.Renviron可用於打開或關閉某些測試。我傾向於保持全部 - 最好浪費幾秒鐘的時間,而不是從維也納得到一張討厭的圖片。

+0

謝謝 - 我會做一些功課來弄清楚這些東西是什麼以及它們在Mac上如何工作,我會在這裏報告 – baptiste