Question

Je suis en train d'avoir une emprise sur C ++ / CRPP comme une extension de R pour des tâches de calcul lourds. En fin de compte, ces C ++ libs devraient être intégrés dans un paquet, et celui-ci, je suis à la recherche d'une configuration / combinaison d'outils / IDE que je aurais besoin de travailler facilement. Je sais que beaucoup dépend goût, mais ce serait bien de connaître mes options avant de choisir.

: lorsque vous développez des packages R avec C ++ libs, quelle est la configuration que vous travaillez avec

?
  • utilisez-vous le même éditeur / IDE pour R et C ++ et dont l'un (ou lesquels)?
  • sont là des outils supplémentaires (à l'exception de RTools) qui sont importants pour obtenir?
  • sont là quelques réglages dans la configuration générale qui sont importantes pour savoir ou accélérer considérablement le processus?

Désolé si cette question a été posée. J'ai trouvé une liste de tous les éditeurs pour R, mais rien spécifiquement vers le développement des emballages, y compris le code C. Tous les conseils ou conseils sont vraiment appréciés.

Edit: la plate-forme est Windows, mais je peux passer à Linux sans problème (dual boot, seule chose me garder d'utiliser ubuntu est l'absence d'un pilote décent pour mon ancienne carte / ancienne combinaison écran)

Était-ce utile?

La solution

statet si vous souhaitez vous joindre à nous dans le monde moderne:)

Autres conseils

Je suis bien sûr pleinement en faveur de plus CRPP de travail :)

En ce qui concerne vos questions, et dans l'ordre:

  • même éditeur (Emacs), qui fait pour la cohérence agréable sur la plate-forme soit l'utilisation I (principalement Linux, occassionally Windows); pour le disque que j'ai aussi parlé en faveur de l'IDE qtcreator qui est assez agréable sur Linux et Windows (mais ne le fait pas R).
  • non, sur Linux tout est prêt fait (et oui, sous Windows, vous ne RTools besoin) ...
  • pas vraiment - vous savez probablement déjà sur en ligne qui est bon pour tester R / C ++ extraits de code.

Edit: D'une certaine manière, ce qui est vraiment pas différent de développement normal R / C / C ++ / Fortran. Et dans ce cas, je me réfère habituellement R FAQ Section 6 qui est entièrement consacrée à R et Emacs :) Cela dit, la mise en Emacs pour le travail de C est pas évidente et il y a un certain nombre de questions et messages ici. Je n'utilise un navigateur de classe particulière, mais il y a certains, ainsi que les approches de l'auto-complétion des types etc.

Vous voulez un éditeur qui peut gérer plusieurs langues, R, C +, peut-être Makefiles, etc. Puisque vous mentionnez RTools il semble que vous êtes sur Windows. Je suggère Notepad ++ il gère R, C ++, et beaucoup d'autres langues. De plus, vous pouvez configurer commande personnalisée par NppExec pour construire le paquet plus facilement. J'ai développé quelques paquets qui font un usage intensif de C / C ++ en utilisant Notepad ++.

Je viens d'écrire un script cmake pour générer projet Eclipse CDT pour le développement de package CRPP.

En outre, CMake pourrait être en mesure de générer des projets CodeBlocks ou kdevelop3, mais je ne vérifié ces caractéristiques, encore.

Environnement

  • CMake> = 2.8.7
  • Eclipse> = 3.7
  • Eclipse CDT> = 1.4.2
  • R> = 2.15
  • CRPP> = 0,10

Configuration

  • Télécharger FindLibR.cmake de github fourni par rstudio

  • Générer paquet CRPP, par exemple

    library(Rcpp)
    Rcpp.package.skeleton("RcppPackage")
    
  • Mettre le script suivant (ou le télécharger essentiel ), nommé CMakeLists txt , dans le dossier généré tel que RcppPackage dans l'exemple précédent.

    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}")
    
  • Personnaliser roxygenize et R CMD INSTALL dans CMakeLists.txt

  • Générer projet avec 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
    
  • Ouvrir Eclipse et projet d'importation de build (Voir cmake-eclipse-cdt Exemple). Après indexation, profiter de plusieurs fonctionnalités pratiques fournies par Eclipse CDT telles que le traçage et saisie semi-automatique.

  • Vous pouvez construire le projet qui sera converti en R CMD INSTALL ou quoi que ce soit dans le CMakeLists.txt .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top