首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试是否由CRAN检查包

测试是否由CRAN检查包
EN

Stack Overflow用户
提问于 2015-03-23 12:42:23
回答 1查看 198关注 0票数 7

我的包中的一些函数使用C++11容器运行得更快,但是CRAN不接受使用$(SHLIB_OPENMP_CXXFLAGS)$(CXX1XSTD)的包,因为它没有在Solaris (或其他小型平台)上编译。CRAN的建议是编写一个配置脚本,但我认为这对我来说太费时了,而且对很少有人使用的平台来说,这也不必要地使我的代码复杂化了。

目前,我已经注释掉了所有的C++11代码,并将$(CXX1XSTD)Makevars中删除,以便提交CRAN。这是一项糟糕的工作,我更希望能够在Makevars中检测到CRAN并做出相应的调整,所以我不必为每个版本维护一个CRAN叉。

我仍然测试C++11是否可用,但这只是Makevars中的C++11和OpenMP标志的组合,这是Solaris与CRAN提交的绊脚石。我觉得一定有一种琐碎的方法。

是否有一个环境变量用于测试CRAN本身是否正在检查我的包,以及我可以在Makevars中测试哪个?我已经搜索了R代码库,阅读了R内部文件并编写了R扩展,尽管我不能说我对它们了如指掌,正如一些CRAN维护人员所期望的那样。可能会设置一些环境变量,但我希望对类似_R_CHECK_CRAN_INCOMING_=TRUE这样的东西进行测试会引起维护人员的不满。

我认为Makevars中的"if solaris“测试是不够的:不允许同时使用C++11和OpenMP标志,因为它们在比Solaris更少使用的平台上可能会失败。

也许我只是走错路了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 10:17:59

虽然对此进行测试是可能的,但正确的方法是配置脚本。我使用configure.ac autoconf来生成它,这最终并不难。然后,C++代码可以根据需要使用ifdef来测试是否存在C++11符号,并且仍然使用OpenMP #杂注声明。窗户需要特殊处理。我使用了RODBC包中的方法。这还没有提交给CRAN,也没有在Solaris上进行测试,但它直接回答了CRAN维护者的建议。

请参阅:https://github.com/jackwasey/icd

相关文件是: configure.ac,src/config.h.in,src/Makevars.in

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29210506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档