在Windows機器上使用RCPP和RStudio/RTools,我創建了批處理地理編碼NYC地址的軟件包。該軟件包使用免費的NYC DCP Geosupport地理編碼軟件的DLL和C頭文件。我很樂意分享我的軟件包,但遇到Makevars/Makevars.win文件中的路徑時遇到了障礙。因爲我是我自己的機器上運行此,我已經定位出地理編碼軟件安裝在我的機器上,並使用這些信息爲我Makevars/Makevars.win文件的奢侈品:如果我分享這個包動態設置PKG_LIBS和PKG_CPPFLAGS
##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文件中使用環境變量的幾個軟件包。我的問題是我的環境變量需要改變(用PKG_LIBS的「Bin」替換「fls」,PKG_CPPFLAGS替換爲「src」)。我的shell腳本很弱,所以我認爲我可以在R中應用正則表達式和設置環境。儘管我的機器是Windows,但我希望我的軟件包可用於其他操作系統。
謝謝。 Gretchen
CRAN上的9000多個軟件包中有770+使用Rcpp ---而_many_也有同樣的問題。你可能比看現有的資源更糟糕。 _一般在Windows上,默認情況下CRAN(或用戶)將在由環境變量指定的位置具有文件。其餘的代碼可以查看。 –
你好,德克。我同意,在makevars文件中使用環境變量非常簡單。我的問題是,安裝地理編碼軟件時創建的環境變量需要在其有用之前進行清理。我一直在R中使用gsub手動創建一個新的環境變量,在makevars文件中使用這個新的環境變量並編譯。我確信必須有一個更優雅的方式來做到這一點,並會感謝任何建議。謝謝。 – gmculp