集成C ++代码的软件包开发的IDE /设置

时间:2010-11-09 16:19:42

标签: c++ r ide package rcpp

我正试图抓住C ++ / Rcpp作为R的扩展,用于繁重的计算任务。最终,这些C ++库应该集成在一个包中,因此我正在寻找一个我需要轻松工作的工具/ IDE的设置/组合。我知道很多是依赖于味道的,但在选择之前知道我的选择仍然会很好。

所以:当你使用C ++库开发R包时,你使用的设置是什么?

  • 您是否对R和C ++使用相同的编辑器/ IDE以及哪一个(或哪些)?
  • 是否有额外的工具(除了Rtools之外)很重要?
  • 在一般设置中是否有调整,这对于了解或加速该过程非常重要?

很抱歉,如果之前已经提出这个问题。我找到了R的所有编辑器的列表,但没有专门针对开发包括C ++代码的包。任何提示或提示都非常感谢。

编辑:平台是Windows,但我可以毫无问题地移动到Linux(双启动,只有让我不能使用ubuntu的东西是我的旧卡/旧屏幕组合缺少一个像样的驱动程序)

4 个答案:

答案 0 :(得分:6)

Eclipse + statet如果你想在现代世界中加入我们:)

答案 1 :(得分:3)

我当然完全支持更多Rcpp工作:)

关于你的问题,并按顺序:

  • 相同的编辑器(Emacs),它在我使用的任何一个平台上都很好地保持一致性(主要是Linux,偶尔是Windows);为了记录,我也发表了支持qtcreator IDE的建议,这在Linux和Windows上非常好(但不做R)。
  • 不,在Linux上它已全部准备就绪(是的,在Windows上,你确实需要Rtools)......
  • 不是 - 你可能已经知道inline这对测试R / C ++代码片段有用。

编辑:所以在某种程度上,这与普通的R / C / C ++ / Fortran开发没有什么不同。在这种情况下,我通常会提到完全专注于R和Emacs的R FAQ Section 6 :) 话虽如此,为C ++工作设置Emacs并不明显,这里有很多问题和帖子。我没有使用任何特定的类浏览器,但有一些,以及自动完成类型的方法等。

答案 2 :(得分:2)

你需要一个可以处理多种语言的编辑器,R,C +,也许是Makefile等。既然你提到了Rtools,你会觉得你在Windows上。我建议Notepad ++它处理R,C ++和许多其他语言。另外,您可以通过NppExec设置自定义命令,以便更轻松地构建软件包。我开发了一些使用Notepad ++大量使用C / C ++的软件包。

答案 3 :(得分:0)

我刚刚编写了一个cmake脚本来生成用于开发Rcpp包的Eclipse CDT项目。

此外,cmake可能能够生成CodeBlocks或KDevelop3项目,但我没有 检查了这些功能。

环境

  • CMake> = 2.8.7
  • Eclipse> = 3.7
  • Eclipse CDT> = 1.4.2
  • R> = 2.15
  • Rcpp> = 0.10

配置

  • github下载FindLibR.cmake 由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}")
    
  • 自定义 CMakeLists.txt中的roxygenizeR CMD INSTALL

  • 使用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打开eclipse并导入项目(例如,请参阅cmake-eclipse-cdt)。 索引后,享受Eclipse CDT提供的几个便捷功能 例如跟踪和自动完成。

  • 您可以构建将转换为R CMD INSTALL或的项目 CMakeLists.txt 中的任何内容。