我正在嘗試編譯一個在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
在'?SHLIB'中有一個例子。 –
(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命令不會這麼做你需要找出如何讓它這樣做)。 –
'如何讓它這樣做'是設置R尊重的標準Make變量,如下面的答案。 –