Próbuję skompilować plik C++, który korzysta z biblioteki Boost na Mac OSX. Na przykład, patrz poniższy „simple.cpp”Jak określić ścieżkę wyszukiwania nagłówka podczas korzystania z R CMD SHLIB do kompilowania pliku 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;
}
Jeśli mogę skompilować plik w powłoce poleceń z
g++ -I/usr/local/boost simple.cpp
wtedy wszystko jest w porządku. Ale chciałbym zbudować wspólną bibliotekę, dzięki której będę mógł jej użyć, aby przyspieszyć mój projekt R. Jeśli użyję , to raportuje, że nie można znaleźć pliku nagłówkowego. Czy istnieje sposób określenia ścieżki wyszukiwania dla R CMD? Coś jak
R CMD SHLIB -I/usr/local/boost test.cpp
Istnieje przykład w '? SHLIB'. –
(1) Prawdopodobnie nie powinno być spacji między '<' i 'boost/random.hpp' w linii' # include'. (2) Jeśli musisz podać '-I/usr/local/boost' w wierszu poleceń G ++ (aby nagłówek był zainstalowany jako'/usr/local/boost/boost/random.hpp'), to prawdopodobnie trzeba zrobić to samo dla polecenia R. Alternatywnie G ++ może wyglądać w '/ usr/local/include' automatycznie (a następnie znajduje plik'/usr/local/include/boost/random.hpp'), ale znowu polecenie R tego nie robi (więc musisz dowiedzieć się, jak to zrobić). –
"Jak to zrobić" to ustawienie standardowych zmiennych Make, które R respektuje jak w mojej odpowiedzi poniżej. –