在Windows机器上使用RCPP和RStudio/RTools,我已经创建了一个对NYC地址进行批量地理编码的包。该软件包使用来自NYC DCP Geosupport地理编码软件的DLL和C头文件,该软件是免费的。我很想分享我的包,但是当涉及到Makevars/Makevars.win文件中的路径时遇到了障碍。因为我是在我自己的机器上运行这个程序,所以我可以找到地理编码软件在我机器上的安装位置,并将以下信息用于我的Makevars/Makevars.win文件:
##path 1 = location of NYCgeo.dll file after GBAT install
PKG_LIBS = -L"C:/Program Files/Geosupport Desktop Edition/Bin" -lNYCgeo
##path 1 = location of NYCgeo.h and pac.h files after GBAT install
PKG_CPPFLAGS = -I"C:/Program Files/Geosupport Desktop Edition/Include"如果我共享这个包,我需要这个过程是动态的,因为用户可能会将地理编码软件安装在与我不同的位置。在地理编码软件安装过程中设置了一个名为GEOFILES的环境变量:
Sys.getenv("GEOFILES")
[1] "C:\\Program Files\\Geosupport Desktop Edition\\fls\\"我想知道是否有一种方法可以使用这个变量来设置PKG_LIBS和PKG_CPPFLAGS...可能是这样的:
Sys.setenv("PKG_LIBS"=paste0("-L'",gsub("\\\\", "/", gsub("fls.*$","Bin",Sys.getenv("GEOFILES"))),"' -lNYCgeo"))
Sys.setenv("PKG_CPPFLAGS"=paste0("-I'",gsub("\\\\", "/", gsub("fls.*$","Include",Sys.getenv("GEOFILES"))),"'"))如果这是可能的,我应该把R代码的前面几行放在哪里?它们会出现在Rcpp.Exports.R文件中吗?我假设通过动态设置PKG_LIBS和PKG_CPPFLAGS,将不再需要Makevars/Makevars.win文件。
编辑:嗨,德克。我注意到有几个包在makevars/makevars.win文件中使用环境变量。我的问题是我需要修改我的环境变量(用"Bin“代替”PKG_LIBS“,用"src”代替PKG_CPPFLAGS)。我的shell脚本很弱,所以我认为我可以在R中应用正则表达式和设置环境。虽然我的机器是Windows,但我希望我的包可以与其他操作系统一起使用。
谢谢。格雷琴
发布于 2016-09-30 06:09:40
德克的书中的166-167页给出了答案。我需要创建一个configure.win文件:
#check if Geosupport software is installed
if test -z "${GEOFILES}"; then
echo "Please install Geosupport Software"
exit 1
fi
GC_ROOT="$(echo ${GEOFILES} | sed 's/\\/\//g')"
GBAT_PATH="$(echo ${GC_ROOT} | sed 's/\/fls\///g')"
#check if installation is valid (i.e., dll is where it is supposed to be)
if [ -e "${GBAT_PATH}/Bin/NYCgeo.dll" ]; then
GBAT_DLL="NYCgeo"
else
echo "Please reinstall Geosupport Software"
exit 1
fi
# replace all in Makevars.win
sed -e "s#@GBAT_PATH@#${GBAT_PATH}#g" -e "s#@GBAT_DLL@#${GBAT_DLL}#g" \
src/Makevars.win.in > src/Makevars.win..。以及src目录中的Makevars.win.in文件:
GBAT_PATH = @GBAT_PATH@
GBAT_DLL = @GBAT_DLL@
##path 1 = location of NYCgeo.dll file after GBAT install
PKG_LIBS = -L"$(GBAT_PATH)/Bin" -l$(GBAT_DLL)
##path 1 = location of NYCgeo.h and pac.h files after GBAT install
PKG_CPPFLAGS = -I"$(GBAT_PATH)/Include"编译包时,会在src目录中创建一个Makevars.win文件。
https://stackoverflow.com/questions/39499608
复制相似问题