[Jderobot-dev] JDErobot con CMake

Mikel Gonzalez Baile m.gonzalezbai en gmail.com
Jue Mar 22 01:37:09 CET 2012


Hola a todos,

como ya coment� he estado portando la cadena de compilaci�n de JDErobot de
Autotools a CMake y ya est� listo (ahora vienen las pruebas). Hemos pensado
que como Autotools ahora mismo est� "roto" ser�a buena idea subir al
repositorio la misma copia que hay pero lista para funcionar con CMake, y
si diese alg�n problema siempre se puede tirar de los Makefiles propios con
los que se compilaba ahora cada uno de ellos.

Aunque a�adir� documentaci�n en el manual, os hago aqu� una "breve"
descripci�n para utilizar la nueva herramienta:

- Para construir el sistema:
* cd $JDErobot/build -> En este directorio se almacenar�n los ficheros que
CMake utiliza para su gesti�n
* cmake .. -> Viene a ser el configure de Autotools: Comprobaci�n de
paquetes, establecer variables de entorno, ...
* make -> Compila, enlaza y genera librer�as, interfaces y componentes.
* sudo make install -> Para copiar todo a nuestro equipo (se mantienen las
rutas donde se copia v�a paquete)

- Para limpiar:
* make clean
* sudo make uninstall


Observaciones:

- Como ver�is la estructura de directorios es la misma.

- Ahora mismo casi todos los componentes est�n actualizados e integrados en
la cadena, con lo que no deber�a de haber problemas para comenzar a
trabajar ya con CMake.

- Para la compilaci�n y enlazado de los componentes con las librer�as
propias (jderobotice, jderobotinterfaces, visionlib...) se hace uso de las
que se generan en la propia copia del repositorio al lanzar el CMake, de
esta forma si en un futuro se modifica o a�ade alguna siempre trabajamos
con la m�s actual. Esto quiere decir que si queremos no es necesario lanzar
el "make install" ya que podemos trabajar igual.

- He a�adido un fichero de configuraci�n (jderobot.cfg) en el que se
encuentran los nombres en formato columna de todos los componentes que
queremos compilar. Esto es para que quien unicamente necesite utilizar uno
de ellos no se vea obligado a lanzar la cadena para todos, es m�s, no ser�a
necesario descargar todos los componentes. Hay que tener en cuenta que las
interfaces y librer�as con las que se enlazan los componentes son las que
se generan a partir de la copia, con lo que los directorios "interfaces" y
"libs" s� son necesarios.

A�adir un componente nuevo:

He intentado que todos los ficheros CMakeLists.txt (lo que sustituye al
Makefile.am) sigan un mismo patr�n para que sea lo m�s f�cil posible
empezar a trabajar con ellos. Los pasos para a�adir un nuevo componentes
ser�an:

1) A�adir el nombre del nuevo componente en el fichero de configuraci�n
"jderobot.cfg".

2) Crear un CMakeLists.txt dentro del directorio del nuevo componente
src/components/nuevocomponente que m�s o menos seguir� el siguiente patr�n
(os dejo un ejemplito):

SET( SOURCE_FILES API.cpp camera.h camera.cpp control.cpp drawarea.cpp
gui.cpp introrob.cpp MyAlgorithms.cpp pioneer.c pioneeropengl.c) # Ficheros
fuente

include_directories( # el -I de antes. D�nde buscar� el compilador las
cabeceras.
    ${INTERFACES_CPP_DIR}
    ${LIBS_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/cameras
)

set( CMAKE_CXX_FLAGS "-lglut -lgsl -lgslcblas" ) # Opciones para el
compilador

link_directories( # D�nde busca las librer�as el enlazador. Lo que era el
-L.
/usr/local/lib
)

add_executable (introrob  ${SOURCE_FILES}) # Definimos el nombre del
ejecutable y de los fuente que depende.

TARGET_LINK_LIBRARIES(introrob # Dependencias para el enlazador. Lo que era
el -l.
    # Se podr�a haber puesto aqu� la librer�a libgslcblas.so
    ${opencv_LIBRARIES}
    ${gtkmm_LIBRARIES}
    ${libglademm_LIBRARIES}
    ${gthread_LIBRARIES}
    ${libgnomecanvas_LIBRARIES}
    ${libgnomecanvasmm_LIBRARIES}
    ${gtkglextmm_LIBRARIES}
    ${LIBS_DIR}/colorspaces/libcolorspacesmm.so
    ${INTERFACES_CPP_DIR}/jderobot/libJderobotInterfaces.so
    ${LIBS_DIR}/jderobotice/libjderobotice.so
    ${LIBS_DIR}/jderobotutil/libjderobotutil.so
    ${LIBS_DIR}/progeo/libprogeo.so
    ${LIBS_DIR}/pioneer/libpioneer.so
)

Como digo al principio a�adir� documentaci�n en el manual, pero mientras
tanto os dejo este tocho :-). Espero que no de muchos problemas, si los hay
dejamos este hilo para irlos comentando y solucionando.

Un saludo!

Mikel.
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20120322/ef7323cc/attachment.htm 


More information about the Jde-developers mailing list