r语言 - 正在为 CRAN 做准备:'-fopenmp' 叮当错误?



我正在准备一个包(使用Rcpp和RcppArmadillo)提交给CRAN。我正在使用Travis CI,我已经包含了以下内容来更彻底地测试我的软件包:

os:
  - linux
  - osx
compiler:
  - clang
  - gcc

但是,这会产生在OS X上使用clang时(似乎很熟悉)错误

* installing *source* package ‘my_pkg’ ...
** libs
clang++  -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I"/Users/travis/R/Library/Rcpp/include" -I"/Users/travis/R/Library/RcppArmadillo/include" -I/usr/local/include  -fopenmp  -fPIC  -Wall -g -O2  -c RcppExports.cpp -o RcppExports.o
clang: error: unsupported option '-fopenmp'
make: *** [RcppExports.o] Error 1
ERROR: compilation failed for package ‘pkg’
* removing ‘/Users/travis/build/my_user/pkg/pkg.Rcheck/pkg’

通过适当调整我的travis.yml文件以遵循此处建议的解决方法之一,似乎我可以避免此问题。

我的问题是:如果我想把它放在 CRAN 上,我该怎么办?在我看来,Jim 的建议只是本地的,我是否必须在我的包中做一些事情来自动避免用户的编译问题才能被 CRAN 接受?

编辑:更具体一点,我可以把CXX=g++放在Makevars,还是皱眉(这就足够了)?

所以...请一步一个脚印。 你在这里拉哪个 RcppArmadillo 版本? 你要拉哪个叮当版本? 那个叮当版本是从哪里来的? 它有OpenMP支持吗?

之前版本的 RcppArmadillo 开始,我们确保我们只是在 macOS 上关闭 OpenMP,因为构建支持太脆弱了,请参阅 GitHub 上的此 PR。 因此,您可能必须删除文件中无条件使用-fopenmp,或者干脆不使用Matrix的"单元格"(即clang && macOS)。

否则,吉姆·海斯特(Jim Hester)的答案是准确的。 事情只是在macOS上做更多的工作。

最新更新