[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