[Jderobot] Propuestas sobre cmakes y relacionados.

Luis Roberto Morales lr.morales.iglesias en gmail.com
Mie Nov 27 16:04:31 CET 2013


Hola,
pensando un poco sobre el tema cmakes y asuntos relacionados había pensado
unas ideas que se podrían ir incluyendo progresivamente si las vemos bien:


   1. Eliminación de las carpetas "build" en los componentes del
   repositorio.
   Si no se me ha pasado algo, en principio la idea de estas carpetas -
   hablo de las build a secas, las de build-indepentent tenían otra motivación
   - era facilitar un cmake para compilar solo el componente al que hacen
   referencia y, por tanto, permitir una compilación por componentes.
   La compilación por componentes creo que estaría resuelta ya con el tema
   de las variables build_componente de la cadena de compilación principal; si
   esto es así, las carpetas "build" dejan de tener sentido y, al no estar
   correctamente mantenidas en algunos casos, pueden dar lugar a confusiones.

   2. Cambiar la inserción de librerías en los cmake desde
CMAKE_CXX_FLAGSa su posición correcta.
   Todavía hay componentes sueltos que añaden librerías como Ice y otras
   vía flags que se le pasan directamente a al compilador de c++. Esto en
   algunos sistemas y casos puede provocar un problema posterior de enlazado
   ya que las librerías insertadas de esta forma se pasan siempre primero en
   la cadena de enlazado.
   A parte de que para algunas de ellas ya hay variables en cmake, insertar
   estas librerías directamente en la lista de TARGET_LINK_LIBRARIES  tiene
   un efecto similar y permite la inserción en el orden adecuado.

   3. Permitir la instalación de jderobot en otras carpetas distintas a
   /usr/local.
   Por lo que he estado viendo en los cmake la instalación se realiza sobre
   carpetas dentro de /usr/local, sin posibilidad de cambio. CMake dispone de
   un equivalente al --prefix de autotools que permitiría al usuario que así
   lo quisiera instalar todo jderobot en una carpeta de su elección.
   No se hasta que punto los componentes esperan que jderobot esté siempre
   en /usr/local, pero de cara a que por defecto el cmake se siga comportando
   como hasta ahora a pesar de cambios de este tipo,
CMAKE_INSTALL_PREFIXpor defecto suele inicializar a /usr/local, por lo
que si no se le dice
   nada y se sustituye correctamente, debería seguir instalando como hasta
   ahora.

   4. Permitir compilación out-source de jderobot.
   Actualmente, al compilar jderobot, los ficheros intermedios y los
   binarios finales se quedan junto a los fuente cuando se da una orden de
   compilación. Redefiniendo los destinos de compilación con las variables de
   CMake adecuadas, se puede obligar a que los resultados de dicha compilación
   cuelguen de la carpeta desde la que se llamo al CMakeList principal, es
   decir, si inicio la compilación desde ./build, todos los ficheros
   intermedios y resultados de la compilación colgarán de esta carpeta.
   Las ventajas de este sistema serían, entre otras, que no hay que limpiar
   el repositorio cada vez que se realiza una compilación y que permite tener
   varias configuraciones de cmake para los mismos fuentes a la vez.

   5. Pruebas automatizadas.
   La idea general sería poner unos equipos,máquinas virtuales o similares
   con los sistemas operativos soportados por jderobot y la instalación mínima
   que se supone necesaria para que este compile con el objetivo de que lancen
   pruebas - en principio de configuración y compilación - y aseguren el
   funcionamiento en estos sin tener que esperar a que aparezca el problema en
   la lista.

   Para realizar esta operación se puede utilizar por ejemplo las
   herramientas ctest (software para programar pruebas diversas, integrable
   con cmake y capaz de emitir resultados a otra aplicación) y cdash (un panel
   web que recoge estas pruebas y las organiza). Con estos dos, se puede
   configurar a las máquinas para que o bien lancen pruebas automáticas (por
   ejemplo los famosos nightly builds) o bien actuen como esclavos de cdash y
   este les ordene hacer pruebas. También se podría elegir si permitir o no
   subir pruebas manuales realizadas desde otros equipos.

Un saludo,

Roberto
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20131127/579f3fb1/attachment.htm 


More information about the Jde-developers mailing list