<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á &quot;roto&quot; 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 &quot;breve&quot; descripción para utilizar la nueva herramienta:</div><div><br></div><div>- Para construir el sistema:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>* cd $JDErobot/build -&gt; En este directorio se almacenarán los ficheros que CMake utiliza para su gestión</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>* cmake .. -&gt; Viene a ser el configure de Autotools: Comprobación de paquetes, establecer variables de entorno, ...</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>* make -&gt; Compila, enlaza y genera librerías, interfaces y componentes.</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>* sudo make install -&gt; 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 class="Apple-tab-span" style="white-space:pre">        </span>* make clean</div><div><span class="Apple-tab-span" style="white-space:pre">        </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 &quot;make install&quot; 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 &quot;interfaces&quot; y &quot;libs&quot; 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 &quot;jderobot.cfg&quot;.</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 &quot;-lglut -lgsl -lgslcblas&quot; ) # 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 class="Apple-tab-span" style="white-space:pre">        </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 id="-chrome-auto-translate-plugin-dialog" 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;overflow-x:visible!important;overflow-y:visible!important;text-align:left!important;background-repeat:initial initial!important">
<div style><div class="translate"></div><div class="additional"></div></div><img src="http://www.google.com/uds/css/small-logo.png" onclick="document.location.href=&#39;http://translate.google.com/&#39;;" style="position: absolute !important; z-index: -1 !important; right: 1px !important; top: -20px !important; cursor: pointer !important;-webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; padding: 3px 5px 0 !important; margin: 0 !important;"></div>