IDE / настройка для разработки пакетов с интегрированным кодом C ++ - PullRequest
8 голосов
/ 09 ноября 2010

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

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

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

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

Редактировать: платформа - это Windows, но я могу без проблем перейти на Linux (двойная загрузка, единственное, что мешает мне использовать ubuntu, это отсутствие подходящего драйвера для моей старой карты/ старая комбинация экранов)

Ответы [ 4 ]

6 голосов
/ 10 ноября 2010

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

3 голосов
/ 09 ноября 2010

Я, конечно, полностью за более Rcpp работа :)

Что касается ваших вопросов и по порядку:

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

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

2 голосов
/ 09 ноября 2010

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

0 голосов
/ 29 января 2013

Я только что написал скрипт cmake для генерации проекта Eclipse CDT для разработки пакета Rcpp.

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

Окружающая среда

  • CMake> = 2,8,7
  • Затмение> = 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 in 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
    
  • Открыть проект eclipse и импортировать из build (см., Например, cmake-eclipse-cdt ). После индексирования воспользуйтесь несколькими удобными функциями, предоставляемыми Eclipse CDT такие как трассировка и автозаполнение.

  • Вы можете построить проект, который будет преобразован в R CMD INSTALL или что-нибудь в CMakeLists.txt .

...