[Jderobot-dev] JDErobot con CMake

David Lobato dav.lobato en gmail.com
Jue Mar 22 11:33:43 CET 2012


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
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20120322/68f961ec/attachment.htm 


More information about the Jde-developers mailing list