无法使用较新版本的Rcpp在名称中构建带有点的包

时间:2017-06-29 07:38:56

标签: r rcpp r-package

因为我将Rcpp的版本更新为0.12.11(我测试它适用于0.12.10)我无法再构建我的包了。 实际上无法构建来自dot.test的名为RStudio的新包。

Updating dot.test documentation
Loading dot.test
Re-compiling dot.test
'/usr/lib64/R/bin/R' --no-site-file --no-environ --no-save --no-restore  \
  --quiet CMD INSTALL '/pxfs/data/statquant/public/dot.test'  \
  --library='/tmp/RtmpZARXxv/devtools_install_1ef63ab8fde6' --no-R --no-data  \
  --no-help --no-demo --no-inst --no-docs --no-exec --no-multiarch  \
  --no-test-load 

* installing *source* package ‘dot.test’ ...
** libs
g++ -m64 -I/usr/include/R -DNDEBUG  -I/usr/local/include -I"/lxhome/statquant/R/x86_64-redhat-linux-gnu-library/3.3/Rcpp/include"   -fpic  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic  -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:20:46: error: ‘dot’ was not declared in this scope
     {"dot.test_rcpp_hello_world", (DL_FUNC) &dot.test_rcpp_hello_world, 0},
                                              ^
R> sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-redhat-linux-gnu (64-bit)
[...]
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
loaded via a namespace (and not attached):
[1] tools_3.3.0
R> system('which g++')
/opt/rh/devtoolset-3/root/usr/bin/g++
R> system('g++ --version')
g++ (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果可以理解C++和包含.的软件包名称可能会出现问题 ,则不会明确禁止 (我知道)。 有很多像data.table这样的软件包在名称中有一个点

我的问题是:

  • 我是否错过了来自R-core的明确规则?
  • 名称中的.意味着我不能再使用Rcpp::compileAttributes了吗?
  • 是否有快速解决方案可以让我构建并仍使用Rcpp>0.12.10

1 个答案:

答案 0 :(得分:3)

这是Kirill前几天(亲自)向我报告的一个错误,现在已经在GitHub上提交了......并且应该很快就会修复。

有关详情和进展情况,请参阅https://github.com/RcppCore/Rcpp/issues/721

目前,快速解决方法是使用手动编辑的src/init.c,直到compileAttributes()得到修复。