[Jderobot-dev] introrob cmake

franciscomiguel.rivas en urjc.es franciscomiguel.rivas en urjc.es
Jue Mar 14 17:25:40 CET 2013


Buenas,
no te compliques.. para librerías que quieras resolver dependencias  
con CMake vete a los cmakes independientes que hemos subidos y copia  
lo que necesites. En los cmakes de openniserver y kinectviewer que he  
subido están prácticamente todas las librerías que solemos utilizar en  
jderobot.
Por ejemplo para ice:

#manual ICE
FIND_PATH( Ice_INCLUDE_DIR NAMES Ice/Ice.h  PATHS ENV C++LIB ENV)

IF( Ice_INCLUDE_DIR )
     FIND_LIBRARY( Ice_LIBRARY1 NAMES Ice PATHS ENV C++LIB ENV PATH  
PATH_SUFFIXES lib lib64 )
     FIND_LIBRARY( Ice_LIBRARY2 NAMES IceUtil PATHS ENV C++LIB ENV  
PATH PATH_SUFFIXES lib lib64)
     SET (Ice_LIBRARIES ${Ice_LIBRARY1} ${Ice_LIBRARY2})
     IF( Ice_LIBRARIES )
		MESSAGE ("-- Ice found at ${Ice_LIBRARIES}")
		include_directories(${Ice_INCLUDE_DIR})
		link_directories(${Ice_LIBRARIES})
     ENDIF( Ice_LIBRARIES )
ENDIF(Ice_INCLUDE_DIR)

IF(NOT Ice_LIBRARIES)
		MESSAGE ("*** Ice not found")
ENDIF()


y luego añadir Ice_LIBRARIES a las librerías de lincado:

TARGET_LINK_LIBRARIES(tu_componente
......
   ${Ice_LIBRARIES}
......
)


"jesus checa rodriguez" <j_checa_rodriguez en hotmail.com> escribió:

> buenos días.
>
> siguiendo lo que Jose Maria me ha indicado, tengo que buscar las librerias
> de Ice e incrustarlas en el CMAKELISTS, el problema es que cuando busco
> la librería Ice me salen varios resultados 16 para ser mas específicos
> entre ellos una libIce.so y una libIceE.so, entiendo que es alguna de estas
> dos,¿cual de las dos seria?
>
> gracias
>
>
> El 13 de marzo de 2013 13:57, JoseMaria <josemaria.plaza en gmail.com>escribió:
>
>> Jesús,
>>
>> tiene pinta de fallo de enlazado, que nos estás enlazando bien con los
>> símbolos de las bibliotecas de ICE (no libjderobotice, sino las de ice
>> propiamente dichas). Esos símbolos de los que se queja la traza están en
>> esas bibliotecas de ice y son referenciados por nuestro libjderobotice.
>> Y no los está encontrando, de ahí el 'undefined reference'. Localiza en
>> tu sistema dónde están las bibliotecas de ice e indícale en el cmakelist
>> que enlace con ellas y dónde están.
>>
>> Echa un ojo a [1] donde se explica bien en qué consiste la compilación,
>> el enlazado, la dependencia de cabeceras o la dependencia de
>> bibliotecas. Para enlazado dinámico, que es un pelín diferente
>> (LD_LIBRARY_PATH, etc.) tienes más información en la web.
>>
>> Ánimo,
>>
>> JoseMaria
>> [1]
>>
>> http://www.nebrija.es/~abustind/Informatica/MetodologiaI/Practicas/Compilacion.pdf
>>
>> On Mon, 2013-03-11 at 14:46 +0100, jesus checa rodriguez wrote:
>> > Buenas Mikel.
>> >
>> >
>> > Están las dos versiones en 4.4 como indica la siguiente traza.
>> >
>> > -------------------------------------------------------------------------
>> > arck en arck-PCn:~$ gcc --version
>> > gcc (Ubuntu/Linaro 4.4.7-1ubuntu2) 4.4.7
>> > Copyright (C) 2010 Free Software Foundation, Inc.
>> > This is free software; see the source for copying conditions.  There
>> > is NO
>> > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> > PURPOSE.
>> >
>> >
>> > arck en arck-PCn:~$ g++ --version
>> > g++ (Ubuntu/Linaro 4.4.7-1ubuntu2) 4.4.7
>> > Copyright (C) 2010 Free Software Foundation, Inc.
>> > This is free software; see the source for copying conditions.  There
>> > is NO
>> > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> > PURPOSE.b
>> >
>> >
>> > arck en arck-PCn:~$
>> > -------------------------------------------------------------------------
>> >
>> > 2013/3/11 Mikel González <m.gonzalezbai en gmail.com>
>> >         Buenas Jesús,
>> >
>> >         ¿qué versión de gcc y g++ utilizas? Tienes que utilizar la
>> >         versión 4.4, para ello tienes que hacer:
>> >
>> >         sudo apt-get install gcc-4.4
>> >         sudo apt-get install g++-4.4
>> >         sudo cd /usr/bin
>> >         sudo rm gcc
>> >         sudo rm g++
>> >         sudo ln -s gcc-4.4 gcc
>> >         sudo ln -s g++-4.4 g++
>> >
>> >         Tras esto, prueba a compilar otra vez, recuerda eliminar todo
>> >         el rastro que cachea CMake antes de lanzar el "cmake .",
>> >         elimina los ficheros CMakeCache.txt.
>> >
>> >         Un saludo.
>> >
>> >         Mikel.
>> >
>> >
>> >
>> >         El 11/03/2013 14:29, jesus checa rodriguez escribió:
>> >
>> >         > buenos dias.
>> >         >
>> >         >
>> >         > estoy intentando compilar introrob para despues empezar a
>> >         > modificarlo, el problema es que al ejecutar el cmake me dice
>> >         > que tiene todo correcto como se puede ver en la traza
>> >         > siguientes y posteriormente, ejecuto el make y me da
>> >         > "undefined reference", si alguien puede explicarme que
>> >         > sucede se lo agradeceria,
>> >         >
>> >         >
>> >         > lo que no entiendo es que introrob lo tengo instalado desde
>> >         > el paquete jderobot-introrob y funciona perfecto.
>> >         >
>> >         >
>> >         > gracias.
>> >         >
>> ------------------------------------------------------------------
>> >         > arck en arck-PCn:~/introrob/build$ cmake ..
>> >         > -- The C compiler identification is GNU
>> >         > -- The CXX compiler identification is GNU
>> >         > -- Check for working C compiler: /usr/bin/gcc
>> >         > -- Check for working C compiler: /usr/bin/gcc -- works
>> >         > -- Detecting C compiler ABI info
>> >         > -- Detecting C compiler ABI info - done
>> >         > -- Check for working CXX compiler: /usr/bin/c++
>> >         > -- Check for working CXX compiler: /usr/bin/c++ -- works
>> >         > -- Detecting CXX compiler ABI info
>> >         > -- Detecting CXX compiler ABI info - done
>> >         > -- checking for module 'gtkmm-2.4'
>> >         > --   found gtkmm-2.4, version 2.24.2
>> >         > -- checking for module 'gthread-2.0'
>> >         > --   found gthread-2.0, version 2.32.3
>> >         > -- checking for module 'libglademm-2.4'
>> >         > --   found libglademm-2.4, version 2.6.7
>> >         > -- checking for module 'libgnomecanvas-2.0'
>> >         > --   found libgnomecanvas-2.0, version 2.30.3
>> >         > -- checking for module 'libgnomecanvasmm-2.6'
>> >         > --   found libgnomecanvasmm-2.6, version 2.26.0
>> >         > -- checking for module 'gtkglextmm-1.2'
>> >         > --   found gtkglextmm-1.2, version 1.2.0
>> >         > -- checking for module 'gsl'
>> >         > --   found gsl, version 1.15
>> >         > -- Configuring done
>> >         > -- Generating done
>> >         > -- Build files have been written
>> >         > to: /home/arck/introrob/build
>> >         > arck en arck-PCn:~/introrob/build$ make
>> >         > Scanning dependencies of target introrob
>> >         > [ 12%] Building CXX object CMakeFiles/introrob.dir/API.cpp.o
>> >         > [ 25%] Building CXX object
>> >         > CMakeFiles/introrob.dir/control.cpp.o
>> >         > [ 37%] Building CXX object
>> >         > CMakeFiles/introrob.dir/drawarea.cpp.o
>> >         > [ 50%] Building CXX object CMakeFiles/introrob.dir/gui.cpp.o
>> >         > [ 62%] Building CXX object
>> >         > CMakeFiles/introrob.dir/introrob.cpp.o
>> >         > [ 75%] Building CXX object
>> >         > CMakeFiles/introrob.dir/MyAlgorithms.cpp.o
>> >         > [ 87%] Building C object CMakeFiles/introrob.dir/pioneer.c.o
>> >         > [100%] Building C object
>> >         > CMakeFiles/introrob.dir/pioneeropengl.c.o
>> >         > Linking CXX executable introrob
>> >         > /usr/local/lib/jderobot/libjderobotice.so: undefined
>> >         > reference to `VTT for IceGrid::CommunicatorDescriptor'
>> >         > /usr/local/lib/jderobot/libjderobotice.so: undefined
>> >         > reference to
>> >         >
>> `IceGrid::ApplicationNotExistException::~ApplicationNotExistException()'
>> >         > /usr/local/lib/jderobot/libjderobotice.so: undefined
>> >         > reference to `vtable for IceGrid::CommunicatorDescriptor'
>> >         > /usr/local/lib/jderobot/libjderobotice.so: undefined
>> >         > reference to
>> >         >
>> `Glacier2::CannotCreateSessionException::~CannotCreateSessionException()'
>> >         > /usr/local/lib/jderobot/libjderobotice.so: undefined
>> >         > reference to `vtable for
>> >         > IceGrid::ApplicationNotExistException'
>> >         > /usr/local/lib/jderobot/libjderobotice.so: undefined
>> >         > reference to `vtable for
>> >         > Glacier2::CannotCreateSessionException'
>> >         > collect2: ld returned 1 exit status
>> >         > make[2]: *** [introrob] Error 1
>> >         > make[1]: *** [CMakeFiles/introrob.dir/all] Error 2
>> >         > make: *** [all] Error 2
>> >         > arck en arck-PCn:~/introrob/build$
>> >         >
>> ------------------------------------------------------------------
>> >         >
>> >         >
>> >         >
>> >         > _______________________________________________
>> >         > 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
>> >
>> >
>> >
>> > _______________________________________________
>> > Jde-developers mailing list
>> > Jde-developers en gsyc.es
>> > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>
>> --
>> http://gsyc.es/jmplaza
>> Universidad Rey Juan Carlos
>>
>>
>> _______________________________________________
>> Jde-developers mailing list
>> Jde-developers en gsyc.es
>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>
>



------------------------------------------------------------------
Laboratorio de Análisis del Movimiento, Biomecánica, Ergonomía y  
Control Motor (LAMBECOM).
Departamento de Fisioterapia, Terapia Ocupacional, Rehabilitación y  
Medicina Física.
Universidad Rey Juan Carlos (URJC).


More information about the Jde-developers mailing list