8
votes

IDE / CONFIGURATION POUR DÉVELOPPEMENT DE PACKAGE AVEC CODE C ++ intégré

J'essaie d'obtenir une adhérence sur C ++ / RCPP comme extension à R pour des tâches de calcul importantes. En fin de compte, ces libs C ++ doivent être intégrés dans un package, et je recherche une configuration / une combinaison d'outils / IDE que je devrais travailler facilement. Je sais que beaucoup est le goût dépendante, mais il serait toujours agréable de connaître mes options avant de choisir.

Donc: lorsque vous développez des paquets R avec C ++ Libs, quelle est la configuration avec laquelle vous travaillez?

  • Utilisez-vous le même éditeur / IDE pour R et C ++ et lequel (ou lesquels)?
  • Y a-t-il des outils supplémentaires (en dehors de RTOOLS) qui sont importants pour obtenir?
  • Y a-t-il des modifications dans la configuration générale qui sont importantes pour connaître ou accélérer considérablement le processus?

    Désolé, si cette question a été posée auparavant. J'ai trouvé une liste de tous les éditeurs pour R, mais rien spécifiquement dirigé vers le développement de packages, y compris le code C ++. Toute astuce ou astuces sont vraiment appréciées.

    Edit: la plate-forme est Windows, mais je peux passer à Linux sans problèmes (Dual Boot, seule chose qui me tenait à utiliser Ubuntu est l'absence d'un conducteur décent pour ma vieille combinaison de carte / vieille écran)


2 commentaires

Quelle plate-forme? Windows, devine de rtools?


Vous pouvez échanger l'une des balises «IDE» et «développement» pour «RCPP».


4 Réponses :


3
votes

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

Quant à vos questions, et dans l'ordre:

  • même éditeur (EMACS) qui permet une consistance agréable sur l'une ou l'autre plate-forme que j'utilise (principalement Linux, des fenêtres d'occasion); Pour l'enregistrement, j'ai également parlé en faveur du QtCreator IDE qui est assez agréable sur Linux et Windows (mais ne fait pas R).
  • Non, sur Linux Tout est prêt à être fait (et oui, sous Windows, vous avez besoin de rotools) ...
  • pas vraiment - vous savez probablement déjà sur inline qui est bon pour tester r / C ++ Code Snippets.

    éditer: Donc, d'une manière, ce n'est vraiment pas différent du développement normal R / C / C ++ / FORTRAN. Et dans ce cas, je me réfère généralement à r FAQ section 6 qui est entièrement consacré à r et emacs :) Cela dit, la fixation des emacs pour le travail C ++ n'est pas évidente et il y a un certain nombre de questions et de messages ici. Je n'utilise aucun navigateur de classe particulier, mais il y en a quelques-uns, ainsi que des approches de l'achèvement automatique des types, etc.


2 commentaires

Windows c'est, désolé de ne pas la mentionner. et merci pour le pointeur à en ligne. Entendu à ce sujet avant d'un certain Sir Eddelbuettel, mais oublié à nouveau.


Oui, si et quand vous avez des fenêtres lui-même apprivoisés avec des rtools, le bon chemin, peut-être du latex, .... alors le choix de l'éditeur est simple. Choisir un qui se sent bien. Certaines personnes jurent également par Eclipse pour C ++ et R (à l'aide d'un plugin appelé statut pour R).



2
votes

Vous voudrez qu'un éditeur pouvant gérer plusieurs langues, R, C +, peut-être des fabricants, etc. puisque vous mentionnez RTools, il semble que vous êtes sous Windows. Je suggérerais NotePad ++ Il gère R, C ++ et beaucoup d'autres langues. De plus, vous pouvez configurer la commande personnalisée via NPPEXEC pour construire plus facilement le package. J'ai développé quelques packages qui utilisent fortement C / C ++ à l'aide de Notepad ++.


0 commentaires

6
votes

Eclipse + statut Si vous souhaitez vous joindre à nous dans le monde moderne :) < / p>


5 commentaires

@Dr g: Je l'ai essayé, mais je n'étais pas convaincu d'Eclipse / Statet d'utiliser R. J'utilise Tinn-R, et c'est toujours le meilleur à mon goût. Mais je vais essayer à nouveau avec C ++


Sert le but en effet, même si je continue à utiliser TINN-R lorsque je travaille avec R seul.


Je échangeais entre statut et Sciviews, mais STATET est activement développé et les fonctionnalités sont ajoutées régulièrement. Je trouve qu'une fois que vous vous y êtes habitué, c'est un excellent environnement de travail ...


Je suis en retard à la fête, mais vous obtenez de l'éclipse et de courir avec RCPP est une tâche de non-trival. Voici quelque chose pour vous aider à démarrer: blog.fellstat.com/?p=170


@Ianfellows Vous devriez poster une réponse séparée de votre choix. Je ne peux pas imaginer à quel point il serait difficile de configurer Eclipse + Statet + RCPP sans votre article. Merci pour ça.



1
votes

Je viens d'écrire un script Clake pour générer un projet Eclipse CDT pour développer un package RCPP.

De plus, Clake pourrait être capable de générer des projets de code ou de KDevelop3, mais je n'ai pas vérifié ces fonctionnalités encore. P>

Environnement H1>
  • Clake> = 2.8.7 LI>
  • Eclipse> = 3.7 li>
  • Eclipse CDT> = 1.4.2 Li>
  • r> = 2.15 li>
  • RCPP> = 0,10 li> ul>

    Configuration h1>
    • Télécharger FindLibr.Cmake de Github A > fourni par RStudio P> LI>

    • génère un package RCPP, par exemple p>

      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
      
    • Mettez le script suivant (ou téléchargez-le de GIST ), nommé CmAkelists .txt em>, dans le dossier généré tels que rcpppackage code> dans l'exemple précédent. P>

      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 roxygener code> et r cmd installe code> dans cmakelists.txt em> p> li>

    • Générez un projet avec CMAKE P>

      library(Rcpp)
      Rcpp.package.skeleton("RcppPackage")
      
    • Éclipse ouvert et import de Build Code> (voir CUKE-ECLIPSE -CDT par exemple). Après indexation, profitez de plusieurs fonctionnalités pratiques fournies par Eclipse CDT tels que le traçage et l'autocomplete. p> li>

    • Vous pouvez créer le projet qui sera converti en r cmd installer code> ou quelque chose dans les cmakelists.txt em>. p> li> ul> p>


0 commentaires