5

私はすでにemacsのドキュメント、cedeのWebサイト、およびここでSOを無駄に検索しました。私の質問がすでに回答されている場合は、自由に (既存の回答を指摘して) 閉じてください。

emacs の EDE プロジェクトに慣れようとしています。ここまでで、1 つ以上のファイルを含む単純なプロジェクトをセットアップできました。

ここで、コードの一部を分離してライブラリにパックしたいと考えています。基本的に、次の手書きの単純な 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
  )
4

1 に答える 1

3

それで、

私はそれを解決したと思います。誰かが同じ困難に遭遇した場合に備えて、私は自分で質問に答えています。

基本的に、ライブラリをコンパイルおよびアーカイブするサブプロジェクトをディレクトリ「lib/」に定義する必要がありました。

私は今、次のファイルを持っています

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

config-file 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")
    )
   )
  )
于 2011-06-26T11:17:39.027 に答える