2012-09-14 32 views
5

我正在嘗試編譯一個在Mac OSX上使用Boost庫的C++文件。例如,請參見下面的「simple.cpp」如何使用R CMD SHLIB編譯C++文件時指定標題搜索路徑?

#include <boost/random.hpp> 
using namesapce boost::math; 

int main(){ 
    boost::mt19937 rng; 
    rng.seed(static_cast<boost::uint32_t> (std::time(0))); 

    return 0; 
} 

如果我編譯的命令shell文件與

g++ -I/usr/local/boost simple.cpp 

那麼一切都很好。但我想建立一個共享庫,以便我可以使用它來加速我的R項目。如果我使用

R CMD SHLIB test.cpp 

然後它報告頭文件找不到。有沒有辦法指定R CMD的搜索路徑?喜歡的東西

R CMD SHLIB -I/usr/local/boost test.cpp 
+0

在'?SHLIB'中有一個例子。 –

+1

(1)'#include'行中的'<'和'boost/random.hpp'之間可能不應該有空格。 (2)如果你需要在G ++命令行上指定'-I/usr/local/boost'(所以頭文件被安裝爲'/ usr/local/boost/boost/random.hpp'),那麼你會可能需要爲R命令執行相同的操作。另外,G ++可以自動查找'/ usr/local/include'(然後找到文件'/ usr/local/include/boost/random.hpp'),但是R命令不會這麼做你需要找出如何讓它這樣做)。 –

+0

'如何讓它這樣做'是設置R尊重的標準Make變量,如下面的答案。 –

回答

相關問題