我的默認方法是瞭解其他人如何解決問題。有2800多個CRAN軟件包,其中很多已經存在了十多年。問題是可以解決的,並且已經解決了。
現在,文檔也存在,但也許分散得太多了。而且,目標轉移。例如,多年前,我們仍然使用src/Makefile
,這些日子非常推薦而不是,因爲需要多層構建(在OS X上,在Windows上,以及在Linux上的一天)。
所以試圖保持簡單有助於。你實際上可以擁有一個有效的C++項目......沒有任何東西。只需將源文件放在foo包的src/
中,R就會知道如何構建libfoo.so
或libfoo.dylib
或...,具體取決於平臺。如果您需要其他頭文件,請嘗試使用src/Makevars
。對於外部依賴,它變得更加棘手,一個必須學習autoconf
等,但許多軟件包通過一些簡單的操作。
所以請擴展您的問題,顯示失敗的內容並記錄您嘗試的內容。我相信我們可以幫助你。
編輯:而如果你想這與Rcpp包(它與R和C++集成方面的幫助),然後有一個entire vignette about to do this in your own package。
編輯2:現在,擴大您的問題,CUDA是一個完全不同的野獸。當你混合使用不同的編譯器等時,這會更困難。在CRAN上有兩個示例包,研究它們。
如果您可以告訴我們關於R安裝附帶的手冊的不足之處,這將有所幫助。 – 2011-03-02 18:18:39
我讀過「Writing R Extensions」。在第1.2節我很快就迷路了。我的C++代碼有一個Makefile,但它不可移植。所以我想使用Makevars.in並配置功能,但我不知道如何繼續。有一個容易理解的例子,有兩個C++源文件,三個頭文件和全部包裝到R包中的R代碼? – 2011-03-02 18:29:40
通常情況下,只有在鏈接到非R所提供的外部庫時,才需要配置腳本。如果您正在這樣做,那麼讓我們知道您嘗試使用哪個外部庫會很有幫助。 – Sharpie 2011-03-02 20:15:33