2012-09-14 12 views
5

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 
+0

C'è un esempio in '? SHLIB'. –

+1

(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). –

+0

'Come farlo fare così' è impostare lo standard Crea variabili che R rispetta come nella mia risposta di seguito. –

risposta

Problemi correlati