在 makevars 中检测 Rcpp/arrayfire 中的 R 版本
Detecting R Version in Rcpp/arrayfire in makevars
我是构建 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
的脚本(可以用任何语言编写),'detects this' 然后相应地编写或更改 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}
我是构建 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
的脚本(可以用任何语言编写),'detects this' 然后相应地编写或更改 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}