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
Hay un ejemplo en '? SHLIB'. –
(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). –
'Cómo hacerlo' es establecer las variables estándar de Make que R respeta como en mi respuesta a continuación. –