在Rcpp/ makevars中的arrayfire中检测R版本



我是构建R包的新手,所以我需要一些帮助:)我使用Rcpp/arrayfire,并希望在我的makevars文件中有一行来检测用户的R版本。目前我将其设置为4.0,但我希望用户使用不同的R版本。

如果这个问题已经有了答案,我很抱歉没有找到一个!

以下是我在makevars文件中的全局变量

R_VERSION = 4.0
AF_CXXFLAGS = -I/opt/arrayfire/include
AF_LIBS   = -L/opt/arrayfire/lib -laf -Wl,-rpath,/opt/arrayfire/lib /Library/Frameworks/R.framework/Versions/$(R_VERSION)/Resources/library/RcppArrayFire/libs/RcppArrayFire.so -Wl,-rpath,/Library/Frameworks/R.framework/Versions/$(R_VERSION)/Resources/library/RcppArrayFire/libs

通常的工作流程是使用一个名为configure的脚本(可以用任何语言编写),它'检测到这一点',然后相应地写入或更改src/Makevars

如果你知道一点关于make或想要学习它,你也可以做在一个Makefile-和我们的脚本src/Makevars是一个。像这样保存到文件Makefile

RVER = `Rscript -e 'cat(R.Version()$$major)'`
SOMEDIR = "/opt/foo/bar/"${RVER}"/some/more"
all:
@echo Using ${SOMEDIR}

在搜索结果

$ make 
Using /opt/foo/bar/4/some/more
$ 

编辑如果你只需要"4.2"在版本之外,一种方法可能是

> gsub("(\.\d)?$", "", format(getRversion()))
[1] "4.2"
> 

编辑2作为一个完整的Makefile,它变成

#RVER = `Rscript -e 'cat(R.Version()$$major)'`
RVER = `Rscript -e 'cat(gsub("(\\.\\d)?$$", "", format(getRversion())))'`
SOMEDIR = "/opt/foo/bar/"${RVER}"/some/more"
all:
@echo Using ${SOMEDIR}

相关内容

  • 没有找到相关文章

最新更新