我正在使用Rcpp编写一个R包,它也使用了一些C ++代码,但每次执行R CMD build <package name>
时,编译整个包需要很长时间,因为有几个cpp文件。有没有办法我只能编译已更改的文件/新文件,而不是重新编译所有内容?非常感谢你!
我有一个像这样的Makevars文件:
PKG_CXXFLAGS=-std=gnu++11
PKG_LIBS=-L. -lall
答案 0 :(得分:10)
我所知道的最好的诀窍是部署大多数Linux发行版所拥有的 awesome 前端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)
其中VER
当前为空,因为4.9是默认值。现在,如果反复重新构建相同的包,编译时间非常快,因为未更改的代码会导致检索目标文件。