增加Rcpp编译速度

son*_*gao 2 c++ r rcpp

我正在使用Rcpp编写一个R包,它也使用了一些C++代码,但每次我都R CMD build <package name>需要很长时间来编译整个包,因为有几个cpp文件.有没有办法我只能编译已更改的文件/新文件,而不是重新编译所有内容?非常感谢你!

我有一个像这样的Makevars文件:

PKG_CXXFLAGS=-std=gnu++11

PKG_LIBS=-L. -lall
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 10

我知道的最好的技巧是部署大多数Linux发行版所具有的令人敬畏的前端ccache,以及OS X也具备的功能(在Brew IIRC中).它可以既使用g++clang.

所以~/.R/Makevars我有

VER=
CCACHE=ccache
CC=$(CCACHE) gcc$(VER)
CXX=$(CCACHE) g++$(VER)
SHLIB_CXXLD=g++$(VER)
FC=ccache gfortran$(VER)
#FC=gfortran
F77=$(CCACHE) gfortran$(VER)
Run Code Online (Sandbox Code Playgroud)

其中VER当前为空,因为4.9是默认值.现在,如果一遍又一遍地重新构建相同的包,编译时间非常快,因为未更改的代码会导致检索目标文件.