我正在准备一个包(使用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
文件以遵守建议here之一的解决方法之一,似乎我可以避免此问题。
我的问题是:如果我想把它放在CRAN上怎么办? Jim的建议在我看来只是本地的,我是否必须在我的包中做一些事情来自动避免用户的编译问题才能被CRAN接受?
编辑:为了更具体一点,我可以将CXX=g++
放在Makevars
中,还是不赞成(这就足够了)?
答案 0 :(得分:1)
所以...请一步一步。您在这里拉哪个RcppArmadillo版本?你拉的是哪个铿锵的版本?那个铿锵的版本从哪里来?它有OpenMP支持吗?
从RcppArmadillo的之前的版本开始,我们确保在macOS上简单地关闭OpenMP ,因为构建支持太脆弱,请参阅this PR on GitHub。因此,您可能必须在文件中删除无条件使用-fopenmp
,或者简单地不使用" cell"您的Matrix(即clang&& macOS)。
否则,answer by Jim Hester是正常的。事情只是对macOS的更多工作。