c++ - 使用库设置 emacs EDE 项目

标签 c++ emacs cedet

我已经在 SO 上搜索了 emacs 文档、cedet 网站和此处,但均无果。如果我的问题已经得到解答,请随意(指出现有答案并)将其关闭。

我正在尝试熟悉 emacs 中的 EDE 项目。到目前为止,我可以用一个或多个文件建立一个简单的项目。

现在我想分离一部分代码并将其打包到一个库中。基本上,我正在尝试通过以下手写的原始 Makefile 实现相同的目标:

matrix:
  g++ -c -o lib/libmatrix.o lib/matrix.cpp -std=c++0x
  ar crf lib/libmatrix.a lib/libmatrix.o

num:
    g++ num.cpp -Llib -Ilib -std=c++0x -o num -g

这里我有一个由“lib/matrix.h”和“lib/matrix.cpp”组成的库(它是矩阵类型的玩具实现)和一个使用矩阵的文件“num.cpp”。

我不知道如何告诉 emacs 正确编译矩阵。到目前为止,我得到了以下 EDE 项目,但它当然无法编译。

;; Object Numbers
;; EDE project file.
(ede-proj-project "Numbers"
  :name "Numbers"
  :file "Project.ede"
  :targets (list 
   (ede-proj-target-makefile-program "num"
    :name "num"
    :path ""
    :source '("num.cpp")
    :compiler 'ede-g++-compiler
    :linker 'ede-g++-linker
    :configuration-variables 'nil
    :ldflags '("-std=c++0x" "-Llib" "-Ilib")
    :ldlibs '("matrix")
    )
   (ede-proj-target-makefile-archive "matrix"
    :name "matrix"
    :path "/lib"
    :source '("matrix.cpp")
    :compiler 'ede-g++-compiler
    :linker 'ede-archive-linker
    :configuration-variables 'nil
    )
   )
  :configuration-variables 'nil
  )

最佳答案

所以,

我想我已经解决了。我正在自己回答这个问题,以防有人遇到同样的困难。

基本上我需要在编译和归档库的目录“lib/”中定义一个子项目。

我现在有以下文件

include/
    matrix.h
lib/
    Project.ede
    matrix.cpp
Project.ede
num.cpp

配置文件 lib/Project.ede 是负责库的子项目,它看起来像这样:

;; Object matrix
;; EDE project file.
(ede-proj-project "matrix"
  :name "matrix"
  :file "Project.ede"
  :targets (list 
   (ede-proj-target-makefile-archive "matrix"
    :name "matrix"
    :path ""
    :source '("matrix.cpp")
    :configuration-variables '(("debug" ("CPPFLAGS" . "-I../include -std=c++0x -g"))    ("release" ("CPPFLAGS" . "-I../include -std=c++0x")))
    )
   )
  )

主文件 ./Project.ede 如下所示:

;; Object num
;; EDE project file.
(ede-proj-project "num"
  :name "num"
  :file "Project.ede"
  :targets (list 
   (ede-proj-target-makefile-program "num"
    :name "num"
    :path ""
    :source '("num.cpp")
    :configuration-variables '(("debug" ("CPPFLAGS" . "-std=c++0x -Iinclude")) ("release" ("CPPFLAGS" . "-std=c++0x -Iinclude")))
    :ldflags '("-Llib")
    :ldlibs '("matrix")
    )
   )
  )

关于c++ - 使用库设置 emacs EDE 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480144/

相关文章:

Emacs:减轻对鼠标的依赖

emacs - [cedet] : how to add a new ede target?

emacs - 如何在 emacs 中突出显示 #ifdef <code/> #endif?

c++ - Lambda 表达式和脚本解析——这是一个好的设计理念吗?

perl - Emacs Perl 模式 : Send script/buffer to Perl interpreter?

emacs - 如何在 Emacs 中使用强制选项移动到列插入空格而不是制表符和空格

emacs - 在较大的换行行中突出显示一行

c++ - 如何计算两个short int的汉明距离?

c++ - std::mt19937_64 比 std::mt19937 快吗?

c# - 我应该使用 dynamic_cast<T> 进行复制吗?