2010-11-09 2 views
8

Я пытаюсь получить доступ к C++/Rcpp как расширение для R для тяжелых вычислительных задач. В конечном счете, эти C++-библиотеки должны быть интегрированы в пакет, и поэтому я ищу установку/комбинацию инструментов/IDE, которые мне нужно будет легко работать. Я знаю, что многое зависит от вкуса, но все же было бы неплохо узнать мои варианты перед выбором.IDE/настройка для разработки пакета с интегрированным кодом на C++

Итак: когда вы разрабатываете пакеты R с C++ libs, с какими настройками вы работаете?

  • Вы используете один и тот же редактор/IDE для R и C++ и какой (или какие)?
  • Есть ли дополнительные инструменты (кроме Rtools), которые важны для получения?
  • Есть ли в настройках общие настройки, которые важны для значительного знания или ускорения процесса?

Извините, если этот вопрос задан раньше. Я нашел список всех редакторов для R, но ничего конкретно не было направлено на разработку пакетов, включая код на C++. Любые подсказки или советы действительно оценены.

Edit: платформа для Windows, но я могу перейти на Linux без проблем (двойная загрузка, единственное, что удерживает меня от использования убунта является отсутствием достойного водителя для моей старой карты/старое сочетание экрана)

+1

Какая платформа? Windows, угадывая Rtools? –

+0

Вы можете поменять один из тегов 'ide' и 'development' для 'rcpp'. –

+0

@ Dirk: Там вы идете –

ответ

6

Затмение + statet если вы хотите присоединиться к нам в современном мире :)

+0

@ Dr G: Я пробовал это, но я не был уверен в использовании Eclipse/StatET для использования R. Я использую Tinn-R, и это - для R-еще лучшего на мой вкус. Но я попробую еще раз с C++ –

+0

Служит действительно, хотя я продолжаю использовать Tinn-R, когда я работаю только с R. –

+0

Я использовал для обмена между statet и sciViews, но statet активно развивается, и функции регулярно добавляются.Я нахожу, что как только вы привыкнете к этому, это отличная рабочая среда ... –

3

I «м конечно полностью в пользу более Rcpp работы :)

Что касается ваших вопросов, и в следующем порядке:

  • же редактор (Emacs), что делает для хорошей консистенции на любой платформе, я использую (в основном Linux , иногда Windows); для записи я также высказался в пользу qtcreator IDE, которая довольно хороша в Linux и Windows (но не делает R).
  • нет, на Linux все это происходит в готовом виде (и да, на Windows, вам нужно Rtools) ...
  • не на самом деле - вы, вероятно, уже знаете о inline, который хорош для тестирования R/C++ фрагменты кода.

Edit: Таким образом, в некотором смысле, это на самом деле не отличается от нормального R/C/C++/Fortran развития. И в этом случае я обычно ссылаюсь на R FAQ Section 6, который полностью посвящен R и Emacs :) С учетом сказанного, установка Emacs для работы на C++ не очевидна, и здесь есть несколько вопросов и сообщений. Я не использую браузер определенного класса, но есть некоторые, а также подходы к автозаполнению типов и т. Д.

+0

Windows, извините, что не упоминал об этом. и thx для указателя на встроенный. Слышал об этом раньше от какого-то сэра Эддельбуэттеля, но забыл об этом еще раз. –

+0

Да, если и когда у вас есть Windows, прирученная Rtools, правильный путь, возможно, латекс, ... тогда выбор редактора прост. Выберите тот, который чувствует себя хорошо. Некоторые люди также клянутся Eclipse для C++ и R (используя плагин под названием StatET для R). –

2

Вам понадобится редактор, который может обрабатывать несколько языков, R, C +, возможно, Makefile и т. Д. Так как вы упоминаете Rtools, это звучит так, как будто вы на Windows. Я бы предложил Notepad ++ обрабатывать R, C++ и целый ряд других языков. Кроме того, вы можете настроить пользовательскую команду через NppExec для более простого создания пакета. Я разработал несколько пакетов, которые сильно используют C/C++ с помощью Notepad ++.

0

Я просто написал сценарий CMake для создания проекта Eclipse CDT для разработки пакета Rcpp.

Кроме того, cmake может генерировать CodeBlocks или проекты KDevelop3, но у меня еще нет этих функций.

среда

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

Конфигурация

  • Скачать FindLibR.cmake из github обеспечивается Rstudio

  • Сформировать пакет Rcpp, например

    library(Rcpp) 
    Rcpp.package.skeleton("RcppPackage") 
    
  • Поместите следующий скрипт (или загрузить его из gist), названные 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.

Смежные вопросы