R 包生成错误:'-std=c++11 or -std=gnu++11 compiler options'



我正在尝试构建一个包括RCPP和RCPPARMADILLO代码的R软件包。Sourcecpp((工作正常,一切都可以顺利运行,但是当我尝试构建包装时,我会得到:"此文件需要编译器和库支持对该包的支持ISO 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语法。

Rcpp11不是 Rcpp。以另一种方式说,Rcpp11Rcpp是两个单独的 r 软件包,它们在 r r c 对象之间提供了"胶水"。结果,它们具有根本不同的API。

DESCRIPTION文件中删除Rcpp11应该允许所有操作。

Imports:
  Rcpp (>= 0.12.13),
  RcppArmadillo (>= 0.7.900.2.0),
  data.table
LinkingTo: Rcpp, RcppArmadillo

启用 c 11 src/Makevarssrc/Makevars.win中使用:

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

在德克的帖子上找到了解决方案。在makevars和makevars.win文件中

CXX_STD = CXX11

被淘汰。包含此选项(删除'#'(,并且没有问题。

相关内容

  • 没有找到相关文章

最新更新