Pregunta

Estoy tratando de obtener un control sobre C ++ / RCPP como una extensión de R para tareas computacionales pesadas. En última instancia, estas librerías C ++ deben integrarse en un paquete, y por lo tanto estoy buscando un programa de instalación / combinación de herramientas / IDE que iba a necesitar para trabajar fácilmente. Conozco tanto es el gusto dependiente, pero aún así sería bueno saber mis opciones antes de elegir.

Por lo tanto: cuando se desarrolla R paquetes con librerías C ++, ¿cuál es la configuración que trabaja con

?
  • ¿utiliza el mismo editor / IDE para R y C ++ y cuál (o cuáles)?
  • ¿hay herramientas adicionales (aparte de RTools) que son importantes para conseguir?
  • ¿hay ajustes en la configuración general de que son importantes conocer o acelerar el proceso considerablemente?

Lo siento si esta pregunta se ha hecho antes. He encontrado una lista de todos los editores de R, pero nada específicamente dirigidos hacia el desarrollo de paquetes incluyendo el código C ++. ¿Alguna pista o consejos son muy apreciados.

Editar: plataforma es Windows, pero puede moverse a Linux sin problemas (arranque dual, único que evita el uso de Ubuntu es la falta de un conductor decente para mi tarjeta de edad / combinación de pantalla de edad)

¿Fue útil?

Solución

Statet si desea unirse a nosotros en el mundo moderno:)

Otros consejos

Estoy, por supuesto, totalmente a favor de más RCPP trabajo :)

En cuanto a sus preguntas, y en este orden:

  • mismo editor (Emacs), que hace de consistencia agradable en cualquier plataforma que uso (en su mayoría de Linux, de vez en cuando Windows); para el registro también he pronunciaron a favor de la IDE qtcreator que es bastante agradable en Linux y Windows (pero no hace R).
  • No, en Linux todo viene ya preparado (y sí, en Windows sí es necesario RTools) ...
  • No realmente - es probable que ya sabe acerca de línea lo cual es bueno para probar R fragmentos / C ++ de código.

Editar: Así pues, en cierto modo, esto es realmente diferente de / ++ normal desarrollo de R / C C / Fortran. Y en ese caso, por lo general se refieren a R sección de preguntas frecuentes 6 que está dedicado enteramente a R y Emacs :) Dicho esto, el establecimiento de Emacs para el trabajo de C ++ no es evidente y hay una serie de preguntas y puestos aquí. Yo no uso de cualquier navegador clase particular, pero hay algunos, así como enfoques para la terminación automática de tipos, etc.

querrá un editor capaz de manejar múltiples idiomas, R, C +, tal vez Makefiles, etc. Ya que mencionas RTools suena como que está en Windows. Yo sugeriría Notepad ++ que maneja R, C ++, y un montón de otros idiomas. Además, puede configuración de comandos personalizados a través NppExec para construir el paquete con mayor facilidad. He desarrollado algunos paquetes que hacen un uso intensivo de C / C ++ con el Notepad ++.

Me acaba de escribir un script para generar cmake proyecto Eclipse CDT para el desarrollo de paquete RCPP.

Por otra parte, cmake podría ser capaz de generar proyectos bloques de código o KDevelop3, pero no tienen comprobar estas características, sin embargo.

Medio ambiente

  • CMake> = 2.8.7
  • Eclipse> = 3,7
  • Eclipse CDT> = 1.4.2
  • R> = 2,15
  • RCPP> = 0,10

Configuración

  • github proporcionado por rstudio

  • Generar paquete RCPP, por ejemplo

    library(Rcpp)
    Rcpp.package.skeleton("RcppPackage")
    
  • Ponga el siguiente script (o descargarlo de GIST ), llamado CMakeLists .txt , en la carpeta generada tales como RcppPackage en el ejemplo anterior.

    cmake_minimum_required(VERSION 2.8)
    project(RcppPackage)
    find_package(LibR)
    if(${LIBR_FOUND})
    else()
        message(FATAL_ERROR "No R...")
    endif()
    message(STATUS ${CMAKE_SOURCE_DIR})
    execute_process(
        COMMAND ${LIBR_EXECUTABLE} "--slave" "-e" "stopifnot(require('Rcpp'));cat(Rcpp:::Rcpp.system.file('include'))"
        OUTPUT_VARIABLE LIBRCPP_INCLUDE_DIRS
    ) 
    include_directories(BEFORE ${LIBR_INCLUDE_DIRS})
    message(STATUS ${LIBR_INCLUDE_DIRS})
    include_directories(BEFORE ${LIBRCPP_INCLUDE_DIRS})
    message(STATUS ${LIBRCPP_INCLUDE_DIRS})
    add_custom_target(RcppPackage ALL
        COMMAND find ${CMAKE_SOURCE_DIR} -name "*.o" -exec rm "{}" "\;"
        COMMAND find ${CMAKE_SOURCE_DIR} -name "*.so" -exec rm "{}" "\;"
        COMMAND ${LIBR_EXECUTABLE} "--slave" "-e" "\"stopifnot(require(roxygen2));roxygenize('${CMAKE_SOURCE_DIR}',roclets=c('rd','collate','namespace'))\""
        COMMAND ${LIBR_EXECUTABLE} CMD INSTALL "${CMAKE_SOURCE_DIR}")
    
  • Personalizar roxygenize y R CMD INSTALL en CMakeLists.txt

  • Generar proyecto con cmake

    mkdir build # don't create subdirectory of RcppPackage
    cd build
    cmake -G "Eclipse CDT4 - Unix Makefiles" <path to RcppPackage> -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE
    
  • Eclipse abierto y proyecto de importación de build (Ver cmake-Eclipse CDT- ejemplo). Después de la indexación, disfrutar de varias prestaciones de que dispone Eclipse CDT tales como la localización y autocompletar.

  • Se puede construir el proyecto, que se convertirá en R CMD INSTALL o nada en el CMakeLists.txt .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top