2012-09-14 24 views
5

Estoy intentando compilar un archivo C++ que usa la biblioteca de Boost en Mac OSX. Por ejemplo, ver la siguiente "Simple.cpp"¿Cómo se especifica la ruta de búsqueda del encabezado cuando se usa R CMD SHLIB para compilar un archivo 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; 
} 

Si puedo compilar el archivo en la consola de comandos con

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

entonces todo está bien. Pero me gustaría construir una biblioteca compartida para que pueda usarla para acelerar mi proyecto R. Si uso

R CMD SHLIB test.cpp 

, entonces informa que no se puede encontrar el archivo de encabezado. ¿Hay alguna manera de especificar la ruta de búsqueda para R CMD? Algo así como

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

Hay un ejemplo en '? SHLIB'. –

+1

(1) Probablemente no debería haber un espacio entre '' 'y' boost/random.hpp' en la línea '# include'. (2) Si necesitabas especificar '-I/usr/local/boost' en la línea de comandos de G ++ (para que el encabezado se instalara como'/usr/local/boost/boost/random.hpp'), entonces probablemente necesite hacer lo mismo para el comando R. Alternativamente, G ++ puede buscar en '/ usr/local/include' automáticamente (y luego encuentra el archivo'/usr/local/include/boost/random.hpp'), pero de nuevo, el comando R no hace eso (por lo tanto necesitas averiguar cómo hacerlo). –

+0

'Cómo hacerlo' es establecer las variables estándar de Make que R respeta como en mi respuesta a continuación. –

Respuesta

Cuestiones relacionadas