提高 Rcpp 编译速度
Increase Rcpp compile speed
我正在使用 Rcpp 编写一个 R 包,它也使用一些 C++ 代码,但每次我这样做 R CMD build <package name>
,编译整个包需要很长时间,因为有几个.cpp 文件。有没有办法只编译更改的 files/new 文件,而不是重新编译所有内容?非常感谢!
我有一个像这样的 Makevars 文件:
PKG_CXXFLAGS=-std=gnu++11
PKG_LIBS=-L. -lall
我知道的最好的技巧是部署 awesome 前端 ccache 大多数 Linux 发行版都有,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 是默认值。现在,如果您一遍又一遍地重新构建相同的包,编译时间会非常快,因为未更改的代码会导致检索目标文件。
我正在使用 Rcpp 编写一个 R 包,它也使用一些 C++ 代码,但每次我这样做 R CMD build <package name>
,编译整个包需要很长时间,因为有几个.cpp 文件。有没有办法只编译更改的 files/new 文件,而不是重新编译所有内容?非常感谢!
我有一个像这样的 Makevars 文件:
PKG_CXXFLAGS=-std=gnu++11
PKG_LIBS=-L. -lall
我知道的最好的技巧是部署 awesome 前端 ccache 大多数 Linux 发行版都有,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 是默认值。现在,如果您一遍又一遍地重新构建相同的包,编译时间会非常快,因为未更改的代码会导致检索目标文件。