我试图抓住C ++/RCPP作为重型计算任务的R扩展。最终,这些C ++液体应集成到一个软件包中,因此我正在寻找工具 / IDE的设置 /组合,我需要轻松工作。我知道味道很大,但是在选择之前知道我的选择仍然很高兴。

因此:当您开发带有C ++ libs的R软件包时,您可以使用什么设置?

  • 您是否将相同的编辑器 / IDE用于R和C ++以及哪个(或哪个)?
  • 是否有额外的工具(除了rtools)很重要?
  • 一般设置中是否有大量了解或加快流程很重要的调整?

抱歉,如果以前问这个问题。我找到了R的所有编辑列表,但没有什么特别针对开发包括C ++代码的软件包的列表。任何提示或技巧都非常感谢。

编辑:平台是Windows,但我可以毫无问题地搬到Linux(双启动,唯一使我无法使用Ubuntu的事情是缺少旧卡/旧屏幕组合的驱动程序)

有帮助吗?

解决方案

Eclipse + Statet 如果您想加入我们的现代世界:)

其他提示

我当然完全赞成 RCPP 工作 :)

至于您的问题,按顺序:

  • 同一编辑器(emacs),它在我使用的任何一个平台上都可以很好地保持一致性(主要是Linux,偶尔窗口);为了记录,我也大声疾呼 qtcreator IDE在Linux和Windows上非常不错(但不做R)。
  • 不,在Linux上,这一切都准备就绪(是的,在Windows上,您确实需要rtools)...
  • 不是真的 - 您可能已经知道 排队 这非常适合测试R/C ++代码段。

编辑: 因此,从某种意义上说,这与普通的R / C / C ++ / Fortran开发没有什么不同。在这种情况下,我通常是指 R FAQ第6节 这完全专门用于R和Emacs :)话:)说,为C ++工作设置Emacs并不明显,这里有许多问题和帖子。我不使用任何特定的类浏览器,但是有一些浏览器以及类型的自动完成的方法。

您将需要一个可以处理多种语言R,C+,MakeFiles等的编辑器。由于您提到了Rtools,听起来就像您在Windows上。我建议Notepad ++它处理R,C ++和许多其他语言。另外,您可以通过nppexec设置自定义命令,以更轻松地构建软件包。我已经开发了一些软件包,可以大量使用记事本++使用C/C ++。

我刚刚写了一个CMAKE脚本来生成Eclipse CDT项目,以开发RCPP软件包。

此外,Cmake可能能够生成CodeBlocks或KDEVEVEL3项目,但我尚未检查这些功能。

环境

  • 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")
    
  • 放置以下脚本(或从中下载 要旨),命名 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}")
    
  • 定制 roxygenizeR CMD INSTALLcmakelists.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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top