我正在尝试构建一个R包,其中包含Rcpp和RcppArmadillo代码。sourceCpp()运行得很好,一切都运行得很顺利,但是当我尝试构建包时,我得到的结果是:“这个文件需要对C++ 2011标准的编译器和库支持。这种支持目前还处于实验阶段,必须使用-std=c++11或-std=gnu++11编译器选项来启用。”
在描述文件中包含RcppArmadillo和Rcpp11似乎没有什么帮助(如下所示)
我的描述文件包括:
Imports:
Rcpp (>= 0.12.13),
RcppArmadillo (>= 0.7.900.2.0),
Rcpp11 (>= 3.1.1.0),
data.table
LinkingTo: Rcpp, RcppArmadillo, Rcpp11我没有包括这两个.cpp文件,因为它们相当长,但显然问题似乎是C++11语法的使用。
发布于 2019-06-26 05:35:36
Rcpp11 is not Rcpp。换句话说,Rcpp11和Rcpp是两个独立的R包,它们提供了R和C++对象之间的“粘合剂”。因此,它们拥有完全不同的API。
从DESCRIPTION文件中删除Rcpp11应该可以让一切正常工作。
Imports:
Rcpp (>= 0.12.13),
RcppArmadillo (>= 0.7.900.2.0),
data.table
LinkingTo: Rcpp, RcppArmadillo在src/Makevars和src/Makevars.win中启用C++ 11
CXX_STD = CXX11 # Required for C++11
PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS)
PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)注意:后两行对于RcppArmadillo是必需的。有关使用C++-11的示例包,请参阅:https://github.com/r-pkg-examples/rcpp-cpp11-usage
发布于 2019-06-26 05:38:06
https://stackoverflow.com/questions/56762172
复制相似问题