【问题标题】:C++11 with R and Rcpp: supported by CRAN policies?带有 R 和 Rcpp 的 C++11:CRAN 策略支持?
【发布时间】:2015-02-01 11:46:07
【问题描述】:

This blog entry 由 Dirk Edelbuettel 指出:

Rcpp,作为一个 CRAN 包,遵循 CRAN 政策,因为它声称的不可移植状态(至少)不支持此标准 [C++11]。

该博客条目已有两年历史,我一直想知道这是否仍然正确(关于 CRAN 政策,我没有找到任何关于 C++11 的提示,以及 Rcpp 支持)。

此外,我想知道这究竟意味着什么。我在src/MAKEVARS 文件中使用了CXX_STD = CXX11 语句(而不是博客条目中建议的Sys.setenv("PKG_CXXFLAGS"="-std=c++11"))。这似乎适用于我正在使用的 C++11 功能(主要是 tgamma 函数)、Rcpp 和 R。但是当我将我的包提交给 CRAN 时,我会被激怒吗?该软件包是否不适用于某些操作系统?

【问题讨论】:

  • 这一切都在Writing R Extensions手册中有详细说明,特别是参见标题为使用C++11的1.2.4节。
  • 我已阅读并遵守本手册这一部分的说明。但是您的文章提到了 CRAN 政策,而不是编写 R 扩展手册,这是两个不同的东西,恕我直言。或者这只是不精确,仅此而已?
  • 你读过Rcpp FAQ吗?我们写它是有原因的,因为您的问题与之前 很多次 提出的问题之间存在共性。也请考虑使用 rcpp-devel 邮件列表而不是这个。 Viel Glueck。
  • 感谢您的提示,我不知道 Rcpp 常见问题解答和 rcpp-devel 列表。我在 Stackoverflow 上进行了彻底的搜索,但没有找到答案,所以我觉得问这个问题是合法的(抱歉,如果我将其误解为问答平台)。关于 Rcpp 常见问题解答:它在哪里声明 a) R 和使用 Rcpp 的包都必须使用相同的编译器版本进行编译,并且 b) CRAN 策略不再拒绝使用 C++11 的包?提前感谢您将我指向正确的条目。我在那里找到的唯一东西是:The default compilers on all the common platforms are suitable.
  • 总是更好地找到源头,而不是仅仅依靠“在 Stackoverflow 上彻底搜索”。 a) 和 b) 都应该与 CRAN 策略 一起在 Writing R Extensions(这是规范)中可用。两者都可以从 R 项目站点和我们自己的 r tag info 页面获得。

标签: c++ r c++11 rcpp cran


【解决方案1】:

以上所有cmets,试一试:

// [[Rcpp::plugins(cpp11)]]

有几个包需要 C++11,在 CRAN 中搜索 SystemRequirements: C++11Rcpp。例如。 http://cran.us.r-project.org/web/packages/contoureR/index.html 在不使用 Rcpp::plugins(cpp11) 的情况下具有大约最简单的包配置。

我的情况很特殊,因为出于晦涩难懂的 CRAN 维护者原因,在深奥的平台上,OpenMP 和 C++11 不能一起使用(请参阅 https://github.com/jackwasey/icd 了解如何使用配置脚本完成此操作)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2012-11-29
    相关资源
    最近更新 更多