IDE / setup pour le développement du paquet avec le code C intégré
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)
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
etR 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 .