Hola<div><br></div><div>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 :-).</div>
<div><br></div><div>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:</div>
<div><br></div><div>- 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.</div>
<div><br></div><div>- 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 :-).</div>
<div><br></div><div>Un saludo y gracias!</div><div><br></div><div>Mikel.<br><div><br></div><div><br></div><div><br></div><div>2012/3/22 David Lobato <span dir="ltr"><<a href="mailto:dav.lobato@gmail.com" target="_blank">dav.lobato@gmail.com</a>></span></div>
<div><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Mikel,<div><br></div><div>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</div><div><br></div><div>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.</div>
<div><br></div><div>Un saludo,</div><div>David.</div><div><div><div><br><div class="gmail_quote">2012/3/22 Julio Vega <span dir="ltr"><<a href="mailto:julio.vega@urjc.es" target="_blank">julio.vega@urjc.es</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Hola Mikel,<br>
<br>
menudo manual que nos acabas de mostrar. Enhorabuena por el
currele.<br>
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.<br>
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.<br>
<br>
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.<br>
<br>
Ya nos cuentas. Un saludo,<br>
<br>
Julio<br>
<br>
El 22/03/12 01:37, Mikel Gonzalez Baile escribió:
<blockquote type="cite"><div><div>
<div>Hola a todos,</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Aunque añadiré documentación en el manual, os hago aquí una
"breve" descripción para utilizar la nueva herramienta:</div>
<div><br>
</div>
<div>- Para construir el sistema:</div>
<div><span style="white-space:pre-wrap"> </span>*
cd $JDErobot/build -> En este directorio se almacenarán los
ficheros que CMake utiliza para su gestión</div>
<div><span style="white-space:pre-wrap"> </span>*
cmake .. -> Viene a ser el configure de Autotools:
Comprobación de paquetes, establecer variables de entorno, ...</div>
<div><span style="white-space:pre-wrap"> </span>*
make -> Compila, enlaza y genera librerías, interfaces y
componentes.</div>
<div><span style="white-space:pre-wrap"> </span>*
sudo make install -> Para copiar todo a nuestro equipo (se
mantienen las rutas donde se copia vía paquete)</div>
<div><br>
</div>
<div>- Para limpiar:</div>
<div><span style="white-space:pre-wrap"> </span>*
make clean</div>
<div><span style="white-space:pre-wrap"> </span>*
sudo make uninstall</div>
<div><br>
</div>
<div><br>
</div>
<div>Observaciones:</div>
<div><br>
</div>
<div>- Como veréis la estructura de directorios es la misma.</div>
<div><br>
</div>
<div>- 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.</div>
<div><br>
</div>
<div>- 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.</div>
<div><br>
</div>
<div>- 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.</div>
<div><br>
</div>
<div>Añadir un componente nuevo:</div>
<div><br>
</div>
<div>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:</div>
<div><br>
</div>
<div>1) Añadir el nombre del nuevo componente en el fichero de
configuración "jderobot.cfg".</div>
<div><br>
</div>
<div>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):</div>
<div><br>
</div>
<div>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</div>
<div><br>
</div>
<div>include_directories( # el -I de antes. Dónde buscará el
compilador las cabeceras.</div>
<div> ${INTERFACES_CPP_DIR}</div>
<div> ${LIBS_DIR}</div>
<div> ${CMAKE_CURRENT_SOURCE_DIR}</div>
<div> ${CMAKE_CURRENT_SOURCE_DIR}/cameras</div>
<div>)</div>
<div><br>
</div>
<div>set( CMAKE_CXX_FLAGS "-lglut -lgsl -lgslcblas" ) # Opciones
para el compilador</div>
<div><br>
</div>
<div>link_directories( # Dónde busca las librerías el enlazador.
Lo que era el -L.</div>
<div><span style="white-space:pre-wrap"> </span>/usr/local/lib</div>
<div>)</div>
<div><br>
</div>
<div>
add_executable (introrob ${SOURCE_FILES}) # Definimos el nombre
del ejecutable y de los fuente que depende.</div>
<div><br>
</div>
<div>TARGET_LINK_LIBRARIES(introrob # Dependencias para el
enlazador. Lo que era el -l.</div>
<div> # Se podría haber puesto aquí la librería libgslcblas.so</div>
<div> ${opencv_LIBRARIES}</div>
<div> ${gtkmm_LIBRARIES}</div>
<div> ${libglademm_LIBRARIES}</div>
<div> ${gthread_LIBRARIES}</div>
<div> ${libgnomecanvas_LIBRARIES}</div>
<div> ${libgnomecanvasmm_LIBRARIES}</div>
<div> ${gtkglextmm_LIBRARIES}</div>
<div> ${LIBS_DIR}/colorspaces/libcolorspacesmm.so</div>
<div> ${INTERFACES_CPP_DIR}/jderobot/libJderobotInterfaces.so</div>
<div> ${LIBS_DIR}/jderobotice/libjderobotice.so</div>
<div> ${LIBS_DIR}/jderobotutil/libjderobotutil.so</div>
<div> ${LIBS_DIR}/progeo/libprogeo.so</div>
<div> ${LIBS_DIR}/pioneer/libpioneer.so</div>
<div>)</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Un saludo!</div>
<div><br>
</div>
<div>Mikel.</div>
<div><br>
</div>
<div style="background-image:initial!important;background-color:transparent!important;padding-top:0px!important;padding-right:0px!important;padding-bottom:0px!important;padding-left:0px!important;margin-top:0px!important;margin-right:0px!important;margin-bottom:0px!important;margin-left:0px!important;text-align:left!important;background-repeat:initial initial!important">
<img></div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
Jde-developers mailing list
<a href="mailto:Jde-developers@gsyc.es" target="_blank">Jde-developers@gsyc.es</a>
<a href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers" target="_blank">http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers</a><span><font color="#888888">
</font></span></pre><span><font color="#888888">
</font></span></blockquote><span><font color="#888888">
<br>
<pre cols="72">--
Julio Vega | <a href="http://robotica-urjc.es/jmvega" target="_blank">http://robotica-urjc.es/jmvega</a>
</pre>
</font></span></div>
<br>_______________________________________________<br>
Jde-developers mailing list<br>
<a href="mailto:Jde-developers@gsyc.es" target="_blank">Jde-developers@gsyc.es</a><br>
<a href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers" target="_blank">http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Jde-developers mailing list<br>
<a href="mailto:Jde-developers@gsyc.es" target="_blank">Jde-developers@gsyc.es</a><br>
<a href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers" target="_blank">http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers</a><br>
<br></blockquote></div><br></div></div>
</div>