2011-06-25 7 views
5

Ya he buscado la documentación de emacs, el sitio web de cedet y aquí en SO en vano. Si mi pregunta ya ha sido respondida, siéntase libre (señale una respuesta existente y) ciérrela.Configuración de un proyecto EDE de emacs con bibliotecas

Estoy tratando de familiarizarme con los proyectos EDE en emacs. Hasta ahora puedo configurar un proyecto simple con uno o más archivos.

Ahora me gustaría separar una parte de mi código y empacarlo en una biblioteca. Básicamente estoy tratando de lograr lo mismo que obtengo con la siguiente manuscrita Makefile ingenua:

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 

Aquí tengo una biblioteca que consiste en "lib/matrix.h" y "lib/matrix.cpp" (es una implementación de juguete de un tipo de matriz) y un archivo "num.cpp" que usa matriz.

No sé cómo decirle a emacs que compile la matriz correctamente. Hasta ahora obtuve el siguiente proyecto EDE, pero por supuesto no compila.

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

Respuesta

3

Así,

Creo que lo resolví. Estoy respondiendo la pregunta yo mismo, en caso de que alguien tropiece con las mismas dificultades.

Básicamente, necesitaba definir un subproyecto en el directorio "lib /" que compila y archiva la biblioteca.

ahora tienen los siguientes archivos

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

el archivo config-lib/Project.ede es el subproyecto responsable de la biblioteca y se ve así:

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

El archivo principal. /Project.ede se ve así:

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