[Jderobot-dev] JDErobot con CMake

Mikel Gonzalez Baile m.gonzalezbai en gmail.com
Jue Mar 22 18:17:11 CET 2012


Hola

Julio, pues la verdad es que aún no he conseguido incorporar giraffeServer,
le estoy echando un ojo y hay algunas cosas del fichero de compilación que
no termino de entender bien, por ejemplo utiliza cabeceras y fuentes de
"robocomp", ¿dónde puedo descargarlo para entender mejor esas dependencias?
seguiré echándole un ojo y os cuento :-).

David, pues justo ayer hablando con José María de algún método para que no
fuese necesario lanzar la cadena para tooodos los componentes, librerías...
Desde mi inexperiencia se me ocurrieron dos:

- Lo de un fichero de configuración donde definiésemos los componentes a
ser procesados para descartar aquellos con los que no queremos trabajar. De
esta forma lo que buscaba era que ciertas comprobaciones muy comunes en los
componentes que ahora hay (librerías, paquetes, etc, etc) se realizasen
desde el directorio raíz liberando de hacer esto por cada componente
existente. Claro, no caí en que aunque ahora la mayoría de los componentes
utilizan las mismas librerías prácticamente (jderobotutil,
jderobotinterfaces, etc) no tiene porqué ser así siempre.

- La otra forma es como dices, cada componente un mini-proyecto en el que
definimos sólo lo que él necesita. Pues si comentas que los de ROS utilizan
esta técnica y va bien, por mi no hay ningún problema y me pongo a adaptar
cada uno de ellos :-).

Un saludo y gracias!

Mikel.



2012/3/22 David Lobato <dav.lobato en gmail.com>

> Mikel,
>
> Muy interesante el trabajo! La verdad es, que una vez te pones a trabajar
> con cmake, de autotools sólo te queda un recuerdo amargo y doloroso :D
>
> Una idea interesante, sería que cada componente fuese un mini projecto en
> si mismo. Con sus dependencias estandar (libjderobot,...) y las propias. De
> esta manera cada componente se configura por si mismo, y no tienes un mega
> tocho que tiene que comprobar las dependendencias de todo y generar miles
> de variables de entorno. Así lo hacen en ROS y a mi me gusta mucho el
> mecanismo. Ahí dejo la idea.
>
> Un saludo,
> David.
>
> 2012/3/22 Julio Vega <julio.vega en urjc.es>
>
>>    Hola Mikel,
>>
>>   menudo manual que nos acabas de mostrar. Enhorabuena por el currele.
>>   Perdona que no te respondiera antes, pero creo que habías tenido algún
>> problema con el componente GiraffeServer. No se si lo habrás resuelto ya.
>>   Aquí la clave está en que ese componente depende del código de la UNEX,
>> de ahí que sea un tanto "raro" respecto a la forma de compilar del resto.
>> Para compilarlo correctamente hay que seguir los pasos que tenemos puesto
>> en un README que hay dentro de la carpeta del componente, pero básicamente,
>> si te fijas, la compilación tira de qmake.
>>
>>   Cómo adaptar eso a cmake, no me hagas mucho caso, pero creo que incluso
>> te será más sencillo que el resto de componentes.
>>
>>   Ya nos cuentas. Un saludo,
>>
>>   Julio
>>
>> El 22/03/12 01:37, Mikel Gonzalez Baile escribió:
>>
>> 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.
>>
>>
>>
>> _______________________________________________
>> Jde-developers mailing listJde-developers en gsyc.eshttp://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>
>>
>> --
>> Julio Vega | http://robotica-urjc.es/jmvega
>>
>>
>> _______________________________________________
>> Jde-developers mailing list
>> Jde-developers en gsyc.es
>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>
>>
>
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20120322/3ba0f0af/attachment.htm 


More information about the Jde-developers mailing list