Sto provando a compilare un file C++ che utilizza la libreria Boost su Mac OSX. Ad esempio, vedere il seguente "simple.cpp"Come specificare il percorso di ricerca dell'intestazione quando si utilizza R CMD SHLIB per compilare un file 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;
}
Se compilo il file nella shell dei comandi con
g++ -I/usr/local/boost simple.cpp
allora tutto va bene. Ma mi piacerebbe costruire una libreria condivisa in modo che io possa usarla per accelerare il mio progetto R. Se utilizzo
R CMD SHLIB test.cpp
quindi segnala che il file di intestazione non è stato trovato. C'è un modo per specificare il percorso di ricerca per R CMD? Qualcosa di simile
R CMD SHLIB -I/usr/local/boost test.cpp
C'è un esempio in '? SHLIB'. –
(1) Probabilmente non ci dovrebbe essere uno spazio tra '<' e 'boost/random.hpp' nella riga' # include'. (2) Se fosse necessario specificare '-I/usr/local/boost' sulla riga di comando G ++ (quindi l'intestazione era installata come'/usr/local/boost/boost/random.hpp'), allora si probabilmente è necessario fare lo stesso per il comando R. In alternativa, G ++ può cercare automaticamente in/usr/local/include' (e poi trova il file/usr/local/include/boost/random.hpp'), ma ancora, il comando R non lo fa (quindi devi scoprire come farlo farlo). –
'Come farlo fare così' è impostare lo standard Crea variabili che R rispetta come nella mia risposta di seguito. –