【问题标题】:Setting up an emacs EDE-project with libraries使用库设置 emacs EDE 项目
【发布时间】:2011-06-25 19:52:26
【问题描述】:

我已经搜索了 emacs 文档、cedet 网站和这里的 SO 都是徒劳的。如果我的问题已经得到解答,请随意(指出现有答案并)关闭它。

我正在尝试熟悉 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
  )

【问题讨论】:

    标签: c++ emacs cedet


    【解决方案1】:

    所以,

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

    基本上我需要在“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")
        )
       )
      )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 2013-02-16
      • 1970-01-01
      相关资源
      最近更新 更多