2011-06-25 10 views
5

Przeszukałem już dokumentację emacsa, stronę cedetu i tutaj na SO na próżno. Jeśli moje pytanie zostało już odebrane, uzyskałem możliwość (wskazać istniejącą odpowiedź) i zamknąć je.Konfigurowanie projektu EDac emacs z bibliotekami

Próbuję zapoznać się z projektami EDE w emacs. Do tej pory mogę skonfigurować prosty projekt z jednym lub większą liczbą plików.

Teraz chciałbym oddzielić część mojego kodu i spakować ją do biblioteki. W zasadzie staram się osiągnąć to samo otrzymuję z poniższej odręcznego naiwnej 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 

Tutaj mam bibliotekę składającą się z „lib/matrix.h” i „lib/matrix.cpp” (jest to zabawkowa implementacja typu macierzy) i plik "num.cpp", który używa macierzy.

Nie wiem, jak powiedzieć programowi emacs, aby poprawnie skompilował macierz. Do tej pory otrzymałem następujący projekt EDE, ale oczywiście nie kompiluje.

;; 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 
) 

Odpowiedz

3

Więc

myślę rozwiązać go. Odpowiadam na to pytanie osobiście, na wypadek gdyby ktoś natknął się na te same trudności.

Zasadniczo potrzebowałem zdefiniować podprojekt w katalogu "lib /", który kompiluje i archiwizuje bibliotekę.

Mam teraz następujące pliki

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

lib config-file/Project.ede podprojektem jest odpowiedzialny za biblioteki i wygląda to tak:

;; 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"))) 
    ) 
    ) 
) 

Główny plik. /Project.ede wygląda następująco:

;; 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") 
    ) 
    ) 
) 
Powiązane problemy