Está en la página 1de 8

Sistemas Informticos Industriales

PRCTICAS
Licencia

Grado en Electrnica y Automtica


Departamento de Informtica de Sistemas y Computadores
Escuela Tcnica Superior de Ingeniera del Diseo
practica_biblioteques_qwt_Qt_r07.odt

BIBLIOTECAS Y COMPONENTES.
LA BIBLIOTECA QWT
ndice de contenido
1.Objetivos.............................................................................................................................................2
2.Material necesario...............................................................................................................................2
3.Introduccin........................................................................................................................................2
4.Puesta a punto de la biblioteca.............................................................................................................3
4.1Obtencin de los fuentes de QWT................................................................................................3
4.1.1Profesional: desde un repositorio (no usar esta)................................................................3
4.1.2Fcil: desde un empaquetado del repositorio (usaremos sta)...............................................4
4.2Construccin e instalacin de la biblioteca...................................................................................4
4.3Probando un ejemplo....................................................................................................................4
5.Actividad bsica: Probando a construir un ejemplo con Qt Creator.....................................................5
6.Actividad extra: Intentar crear un proyecto nuevo...............................................................................5
7.Anexos.................................................................................................................................................6
7.1De cmo se construy la biblioteca en el curso 2010/2011..........................................................6
7.2Del ejemplo de uso del ao 2010/2011.........................................................................................7

1.OBJETIVOS

Practicar el uso de bibliotecas.

Introducir el uso de cdigo software de terceros (repositorios, construccin, etc.).

Practicar la consulta de documentacin tpica de software de terceros.

2.MATERIAL NECESARIO

RECUERDA DESACTIVAR EL ANTIVIRUS

Ordenador PC compatible.

Sistema operativo Microsoft Windows (opcionalmente se puede usar Linux o Mac OS X).

Entorno de desarrollo Qt 5 para C++.

Acceso a Internet.

3.INTRODUCCIN
Esta prctica pretende ilustrar la experiencia de incorporar cdigo de terceras partes en nuestras
aplicaciones.
Se recrear una situacin tpica de intento de uso de software de terceros, vindose contratiempos
y cmo intentar superarlos. Vamos, como la vida misma.
Para este propsito, se ha elegido el reconocido proyecto de cdigo abierto QWT
(http://qwt.sourceforge.net/ ), que es una biblioteca multiplataforma que ofrece widgets para aplica-

ciones tcnicas (grficas, diales, etc.). El proyecto QWT es empleado por muchas aplicaciones comer ciales para la representacin de datos.
Como ilustracin, la siguiente figura muestra uno de los widgets en funcionamiento:

El proyecto genera una biblioteca estndar para distintos sistemas operativos destino, pues est
pensada para poder usarla desde cualquier entorno de desarrollo que pueda emplear bibliotecas estndar. Por ejemplo, se puede usar en entornos como Embarcadero/Borland Builder, Qt, Microsoft Visual
Basic, Microsoft Visual C++, National Instruments Labview, etc. Esta grandes posibilidades se logran
gracias a que el proyecto QWT se ha desarrollado con Qt (vaya casualidad).
El proyecto viene con ejemplos de uso de la biblioteca. Algunos de los ejemplos estn escritos en
Qt, as que son perfectos para poder ilustrar tambin su aprovechamiento.

4.PUESTA A PUNTO DE LA BIBLIOTECA


4.1OBTENCIN DE LOS FUENTES DE QWT
4.1.1PROFESIONAL: DESDE UN REPOSITORIO (NO USAR ESTA)
Muchos proyectos software emplean los denominados repositorios para gestionar el cdigo. Un
repositorio es un almacn del proyecto software que incluye la historia de cambios. Esto permite cosas interesantes como volver atrs, crear ramas del proyecto, fundir ramas, etc. Cualquier proyecto
medianamente complejo no podra ser gestionado adecuadamente sin este tipo de herramientas.
El repositorio QWT es de tipo subversin (svn) , y lo primero ser conseguir una copia local de la
siguiente manera:
En Linux se puede hacer en la lnea de rdenes con,
svn checkout svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1
y se har una copia local sincronizada de todo el repositorio.
En Microsoft Windows, lo ms sencillo es instalar alguna herramienta adicional, por ejemplo, Tortoise (http://tortoisesvn.tigris.org/).

4.1.2FCIL: DESDE UN EMPAQUETADO

DEL REPOSITORIO (USAREMOS STA)

Con algo de suerte, es posible encontrar versiones del repositorio preeempaquetadas o precompilados para plataformas especficas. Dichos empaquetados suelen venir en archivos comprimidos (.zip,
.tar, etc.) o como instalables. Tambin es posible que se empaqueten versiones de la documentacin.
Estamos de suerte: QWT est empaquetado en la pgina
http://sourceforge.net/projects/qwt/files/. Deberemos descargar la QWT 6.1.

del

proyecto

en

Seguir estos pasos:

Descargaremos el zip de la ltima version

Extraer los archivos de la carpeta EN UN DIRECTORIO QUE NO TENGA SIMBOLOS RAROS (espacios, , , ...), por ejemplo C:\pp . Si se extraer con la utilidad estndar de Window,
tener la precaucin de que no duplique la carpeta raz.

Echar un vistazo la la estructura de directorios construida. Es la tpica de muchos proyectos de


software. Abrir y mirar el archivo README.

4.2CONSTRUCCIN E INSTALACIN DE LA BIBLIOTECA


Si se mira detenidamente el archivo README, este nos redirige al archivo INSTALL para construir e instalar la biblioteca.
En los pasos del archivo INSTALL, recordar que se est usando Qt 5.2 LGPL con compilador
MinGW. Algunas indicaciones hay que adaptarlas y las dudas se pueden revisar siguiendo el tutorial
"Al grano Qt".
Sganse estos pasos:

Construir el proyecto. Por defecto, tambin se construyen los ejemplos. Tardar bastantes mi nutos (unos 20 minutos en Windows y unos 5 minutos en Linux).

Instalar las bibliotecas segun el archivo INSTALL. Bsicamente, copiar las bibliotecas y los
manuales a C:\Qwt-6???

4.3PROBANDO UN EJEMPLO
El proyecto est configurado para crear bibliotecas dinmicas, as que los ejecutables de los ejem plos necesitan encontrar estas bibliotecas para funcionar.
Para hacer localizables las bibliotecas, podemos:

O a lo rpido/cutre: copiar los archivos libqwt.a, libqwtd.a, qwt.dll y qwtd.dll al directorio C:\WINDOWS

O modificando la variable PATH de bsqueda de ejecutables y bibliotecas. En el terminal en que se ha compilado, escribir: PATH=%PATH%;C:\Qwt-6???\lib

Para probar algn ejemplo, DESDE DENTRO DEL TERMINAL, nos moveremos al directorio
"bin\examples" de QWT y ejecutaremos los archivos (no se podrn ejecutar los programas desde el
explorador de Windows).
La siguiente imagen corresponde al ejemplo osciloscope.exe.

Nos debemos mantener en el terminal porque, precisamente, est configurado para encontrar las bibliotecas dinmicas que forman Qt.

5.ACTIVIDAD BSICA: PROBANDO A CONSTRUIR UN EJEMPLO CON QT


CREATOR
Se han seguido los pasos del archivo INSTALL, pero la biblioteca se hubiese podido construir desde Qt Creator sin tener que vrselas con el terminal.
Como ya esta construida e instalada, pues pasamos a intentar construir un ejemplo.
Con Qt Creator, abrir el ejemplo"simpleplot". Aceptar la configuracin y construir el proyecto.
Ejecutarlo.
Analizar el cdigo del ejemplo para modificar aspectos del grfico. Usar la documentacin para
entender las funciones.
Hay cosas de simpleplot que tienen que ver con C++ y no se entienden. No asustarse.
Se pueden usar un par de vectores de doubles y pasarle la curva a la grfica usando el mtodo de
QwtPlotCurve setDataRaw().

6.ACTIVIDAD EXTRA: INTENTAR CREAR UN PROYECTO NUEVO


Esta actividad es para nota.
Se pretende que se analice el archivo simpleplot.pro para ententer como se van incluyendo archivos de configuracin para lograr resolver las dependencias e incluir las bibliotecas. Es bastante complejo y se puede ir usando la ayuda de Qt para entender las diferentes rdenes de Qt.
El siguiente listado muestra lo que funcion en el ao 2010/2011, en el que bast aadir a
nuestro .pro las siguientes lneas para poder usar Qwt:. Esto no va a funcionar en esta versin.
#AddingQWTsupport
#ThisisalsomyexampleforDSII2010/2011

#setahelpervariablewiththerootpathofQwt
QWT_ROOT=qwt5.2

#includea.priwiththeconfigurationofQwt
include($${QWT_ROOT}/qwtconfig.pri)

#searchpathforheaderfiles(.h)
INCLUDEPATH+=$${QWT_ROOT}/src

#toresolvedependencies,alsosearchhere
DEPENDPATH+=$${QWT_ROOT}/src

win32{
DEFINES+=QT_DLLQWT_DLL
LIBS+=L$${QWT_ROOT}/liblqwtd5
}

unix{
LIBS+=L$${QWT_ROOT}/liblqwtd
}

7.ANEXOS

7.1DE CMO SE CONSTRUY LA BIBLIOTECA EN EL CURSO 2010/2011


Se mantine este apartado antiguo porque se uso Qt Creator directamente para construir la biblioteca. En ese momento, QWT estaba en la versin 5.2
En el paquete se puede echar un vistazo al archivo INSTALL para saber cmo construir el proyec to e instalar las bibliotecas. Tambin se puede ver este archivo en la pgina web del proyecto en
http://qwt.sourceforge.net/qwtinstall.html.
Es importante destacar que, muchas veces, solo se puede utilizar la lnea de rdenes (terminal de
Windows) para realizar estas tareas en lugar del entorno grfico como se va a hacer aqu.
La manera de construir el proyecto est enfocada a los acostumbrados a este tipo de situaciones.
Se parece mucho a los inicios del tutorial Al grano.
Se recomienda intentar comprender las instrucciones para construir el proyecto segn la pgina
oficial.
Estas instrucciones las podemos traducir usando Qt Creator de la siguiente manera:

Abrir qwt.pro

Crear un "build" nuevo con la sugerencia ofrecida por el entorno.

(Echarle un vistazo por dentro sin asustarse, se trata de una manera de meter muchos pro yectos dentro de uno solo).

En QtCreator, hacer "Build->Run qmake".

En QtCreator, hacer "Build->Rebuild all"

Esperar un buen rato (en Windows unos 15 minutos, en Linux unos 5 minutos).

Se habrn creado, entre otras cosas, las biblitecas .dll y el archivo de acceso a esas libreras. Ver
siguiente pantalla.

Ya tenemos una biblioteca estndar disponible. Y la puede usar cualquier aplicacin.

7.2DEL EJEMPLO DE USO DEL AO 2010/2011


Este es el escenario tpico que nos encontraremos en la sufrida vida del programador.
QWT viene con una serie de ejemplos escritos tambin en Qt que permiten ilustrar su funcionalidad.
Ahora vamos con eso ejemplos para hacerse una idea de qu se puede hacer con esta biblioteca. Se
seguirn estos pasos en QtCreator:

Cerrar el proyecto anterior.

Abrir el archivo .pro que hay dentro de examples.

Reconstruir el proyecto (qmake, rebuild tpicos).

Oooppsss. No funciona. Que pena!


Es importante leer qu nos dice el compilador para intentar solucionar el contratiempo. Ms o menos, el error ser el siguiente:
::error:cannotfindlqwtd5
::error:collect2:ldreturned1exitstatus

Se trata de un error tpico de enlazado al que hay que acostumbrase a identificar. La herramienta
no est encontrando las funciones de biblioteca.
En realidad se trata de dos errores. El primero es la imposibilidad de localizar la biblioteca de
QWT para acceso a la dll (libqwtd5.a).
Sin que sirva de precedente, y para ilustrar la problemtica, se realizar el siguiente apao:

Copiar el directorio "lib" creado en la primera etapa al raz del proyecto qwt.

El proyecto se debera construir ahora sin errores (los warnings son por otros motivos).
Ahora podemos probar a ejecuta el proyecto (botn "play" de QtCreator). En realidad se han creado un montn de ejecutables y se intenta ejecutar el primero, que es "bode.exe".
Oooppsss. No funciona. Puetas!.
Tranquilos, se trata de una sensacin normal de todos los que usan herramientas externas. Se in tentar identificar mejor el problema:

Abre el explorador de Windows y localiza bode.exe.

Haz clic sobre el ejecutable. Debera salir algo del siguiente estilo.

La razn es que, ahora, el problema est en que la aplicacin no puede localizar y cargar la biblioteca dinmica. Este es un problema tpico de las aplicaciones que usan libreras dinmicas. Una compilacin esttica resolvera este problema particular.
Para solucionar este problema debemos colocar la biblioteca en la ruta de bsqueda de bibliotecas
de Windows segn se ha indicado en el material de teora. Otro recurso tpico es copiarla en C:\Windows\system32, pero es, ms bien, una chapuza.
Se har otra chapuza: copia qwt5.dll al directorio donde se han creado los ejecutables y probar de
nuevo.
Repuetas! Esto es un infierno!!!!
Tranquilidad. Sigue los siguientes pasos:

Abrir un teminal de windows configurado para Nokia Qt (Inicio->Nokia ... -> Command
prompt)

Moverse hasta el directorio donde estn los ejecutables.

Ejecutar bode.exe

!Menos mal!.
Lo que ocurre ahora es que el ejecutable encuentra QWT, pero ahora no localiza las .dll de Qt, que
s viene preconfiguradas desde dentro de Qt Creator. Abriendo el terminal, se configura la variable
PATH para que las bibliotecas de Qt sean localizables.
Prueba los ejemplos.

También podría gustarte