代码之家  ›  专栏  ›  技术社区  ›  Joris Meys

用C++代码集成的IDE/包开发包

  •  8
  • Joris Meys  · 技术社区  · 15 年前

    我试图把C +/Rcpp作为对繁重计算任务的R的扩展。最终,这些C++ LIBs应该集成在一个包中,因此我正在寻找一个工具/ IDE的组合/组合,我需要很容易地工作。我知道很多东西都取决于口味,但在选择之前知道我的选择还是不错的。

    • 对于R和C++,你使用同一个编辑器/IDE,哪一个(或者哪个)?
    • 是否有其他重要的工具(除了Rtools)需要获得?

    对不起,如果这个问题以前被问过。我找到了R的所有编辑器的列表,但没有专门针对开发包括C++代码的包。任何提示或提示都是非常感谢的。

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

    4 回复  |  直到 15 年前
        1
  •  6
  •   IRTFM    12 年前

    日蚀+ statet 如果你想加入我们的现代世界:)

        2
  •  3
  •   Dirk is no longer here    15 年前

    Rcpp 工作:)

    至于你的问题,按顺序:

    • 同一个编辑器(Emacs)在我使用的任何一个平台(主要是Linux,偶尔是Windows)上都有很好的一致性;我也公开表示支持 qtcreator IDE在Linux和Windows上很不错(但不支持R)。
    • 不,在Linux上,一切都是现成的(是的,在Windows上,您确实需要Rtools)。。。
    • inline 这对于测试R/C++代码片段很有帮助。

    编辑: R FAQ Section 6 完全致力于R和Emacs:) 也就是说,为C++工作设置Emacs并不明显,这里有很多问题和帖子。我不使用任何特定的类浏览器,但有一些,以及自动完成类型的方法等。

        3
  •  2
  •   Andrew Redd    15 年前

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

        4
  •  1
  •   wush978    13 年前

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

    检查了这些功能。

    环境

    • 日食=3.7
    • 日蚀CDT>=1.4.2
    • R>=2.15
    • Rcpp=0.10

    • 从下载FindLibR.cmake github Rstudio提供

    • 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
      
    • 打开eclipse并从导入项目 build (见 cmake-eclipse-cdt 索引之后,享受Eclipse CDT提供的几个方便的特性 例如跟踪和自动完成。

    • R CMD安装 里面有什么 CMakeLists.txt文件