2011-03-22 64 views
0

我正在使用R獨立庫(libRmath,Ubuntu/Debian軟件包r-mathlib)的大型開源C++程序。我想刪除這種依賴關係:我想在源代碼樹中包含來自R獨立庫的源代碼,而不需要整個R源代碼。這可以做到嗎?在C++源代碼樹中包含R獨立庫

不幸的是,R獨立庫似乎與R代碼的其餘部分緊密耦合。在標準R源代碼包中,主包和獨立庫使用相同的配置腳本。這個配置腳本在不同平臺上播放不好。我希望獨立庫作爲自己的「獨立」源代碼樹可用。

相關注意事項:我查看了Rinside圖書館,特別是通過this thread。我認爲我描述的方法會使分發更容易,原因有兩個:1)已安裝R的用戶不必重新配置其安裝(並且可以保留與其默認安裝不同的版本); 2)沒有R的用戶不需要安裝它。

更新:固定一個錯字 - 我原本是指Rinside爲Rinclude

回答

3

的幾點你:

  1. 可以這樣做?當然,只需將r-mathlib的代碼複製並粘貼到您的項目中即可。該圖書館的許可證是非常自由的LGPL。現在,這是一個好主意?我不這麼認爲。共享庫具有優勢,因爲您可以獲得錯誤修正,更輕鬆和更短的構建等等/

  2. 似乎緊密耦合到其餘的R代碼。不,這是事實不正確的。 r-mathlib的全部意義在於你可以依賴它。我認爲它可能仍然需要系統中的R標頭,但是如果你定義了MATHLIB_STANDALONE變量。例如,在我的Ubuntu盒子上,我只是做了gcc -o /tmp/rmathTest /usr/share/doc/r-mathlib/examples/test.c -lRmath -lm,所得到的二進制文件僅依賴於libRmath,而不是libR

  3. 配置腳本在其他平臺上播放不好。這是一個大膽的聲明,不要靠近裏普利教授任何地方。 R是非常便攜的,我擔心你的說法在這裏缺乏經驗基礎。

你是什麼後可以以不同的方式來完成,並已不同的方式來完成。 是的,還有充足的文件。從'編寫R擴展'和'R Admin + Inst'開始,並通過一切手段回來跟進問題。最後,如果您改變了主意,並且希望在C++中使用R,您也可以考慮使用RInside。但是,這確實會對R,Rcpp和RInside本身產生依賴。