IDE / SETUP для разработки пакета с C ++ Code Integrated
Вопрос
Я пытаюсь получить GRIP на C ++ / RCPP в качестве расширения для R для тяжелых вычислительных задач. В конечном итоге, эти S ++ Libs должны быть интегрированы в пакет, и для этого я ищу настройку / комбинацию инструментов / IDE, которые мне нужно было легко работать. Я знаю много вкуса зависимого, но все же было бы приятно узнать мои варианты перед выбором.
Итак: когда вы разрабатываете R пакеты с помощью C ++ Libs, какая установка вы работаете?
- Используете ли вы тот же редактор / IDE для R и C ++ и какой из них (или какие)?
- Есть ли дополнительные инструменты (кроме RTools), которые важно получить?
- Существуют ли настройки в общей настройке, которые важно знать или ускорить процесс значительно?
Извините, если этот вопрос спросил раньше. Я нашел список всех редакторов для R, но ничего конкретно не направленного на разработку пакетов, включая код C ++. Любые подсказки или советы действительно ценятся.
Редактировать: платформа - это Windows, но я могу перейти к Linux без проблем (двойной ботинок, только что держать меня от использования ubuntu - это отсутствие достойного драйвера для моей старой карты / старой комбинации экрана)
Решение
Затмение + статус Если вы хотите присоединиться к нам в современном мире :)
Другие советы
Я конечно полностью в пользу большего RCPP. Работа :)
Что касается ваших вопросов, а по порядку:
- тот же редактор (Emacs), который делает приятную консистенцию на любой платформе, которую я использую (в основном в Linux, starsionally Windows); Для записи я также выступил в пользу
qtcreator
IDE, которая довольно приятно на Linux и Windows (но не делает R). - Нет, на Linux все готово сделано (а да, на Windows вам нужно RTools) ...
- не совсем - вы, вероятно, уже знаете о в линию Что полезно для тестирования фрагментов кода R / C ++.
Редактировать: Таким образом, это действительно не отличается от нормального развития R / C / C ++ / Fortran. И в этом случае я обычно называю Faq Раздел 6 Которые посвящены полностью r и Emacs :) с тем, что сказано, настроек умирания для работы C ++ не очевидно, и здесь есть ряд вопросов и сообщений. Я не использую какой-либо конкретный браузер класса, но есть некоторые, а также подходы к автоконтеру типов и т. Д.
Вы захотите редактор, который может обрабатывать несколько языков, R, C +, может быть, Makefiles и т. Д. С тех пор, как вы упоминаете RTools, звучит так, будто вы находитесь в Windows. Я бы предложил NOTEPAD ++ он обрабатывает R, C ++ и много других языков. Кроме того, вы можете настроить пользовательскую команду через NPPEXEC, чтобы построить пакет легче. Я разработал несколько пакетов, которые используют C / C ++ с помощью Notepad ++.
Я только что написал сценарий CMake для создания проекта Eclipse CDT для разработки пакета RCPP.
Кроме того, Comake может способствовать созданию кодовых блоков или проектов KDevelop3, но я пока не проверил эти функции.
Окружающая среда
- CMAKE> = 2.8.7
- Eclipse> = 3.7
- Eclipse CDT> = 1.4.2
- R> = 2.15
- RCPP> = 0.10
Конфигурация
Скачать findlibr.cmake гадость предоставляется Rstudio
Генерировать пакет RCPP, например
library(Rcpp) Rcpp.package.skeleton("RcppPackage")
Поместите следующий скрипт (или загрузите его из суть), названный Cmakelists.txt., в сгенерированной папке, такой как
RcppPackage
В предыдущем примере.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}")
Настроить
roxygenize
иR CMD INSTALL
в Cmakelists.txt.Генерировать проект с 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
Открытое затмение и импорт проект от
build
(Видеть Cmake-Eclipse-CDT Например). После индексации насладитесь несколькими удобными функциями, предоставляемыми Eclipse CDT, такими как трассировка и автозаполнение.Вы можете построить проект, который будет преобразован в
R CMD INSTALL
или что-нибудь в Cmakelists.txt..