AbanQ: Antes de seguir… cómo se compila
Bueno, antes de seguir con los artículos de cómo integrar JasperServer, u OpenKM, o introducir alguno de los cambios que propongo... creo que es mejor proporcionaros las herramientas para compilar estas versiones de AbanQ tanto en windows como en linux, para crear así los clientes con las opciones de debug, o quick.
He creado un .zip con mi versión actual de AbanQ, y digo "mi" versión, porque incluye los múltiples cambios que he ido publicando en este blog, y que enumero
- Formateado automático de los FLFieldDB que contienen números, de tal forma, que las cantidades tales como 100000 se representan como 100.000,00 Esto hace mucho más legible las cantidades. Aquí
- Desde QSA (el lenguaje de scripting) pueden accederse al manejo de los QComboBox (así, por ejemplo, he podido meter en algunos formularios objetos QComboBox y utilizarlos directamente sin necesidad de tener que estar asociados a columnas de bases de datos. Esto es especialmente útil para realizar filtrados de campos estáticos o no guardados en bases de datos).
- Los FLTableDB pueden presentar el resultado de Querys complejas, al agregarse una propiedad: qryVisualizacion. De esta forma, la riqueza visual de lo que pueden representar es mayor. La diferencia con la versión oficial de AbanQ, es que ese FLTableDB no es readonly, sino que se utiliza en la edición, creación y eliminación de registros. Aquí
- Cambios estéticos que afectan principalmente a la versión para Windows, ya que la original, no me gustaba (dejo el tema de windows por defecto, sin modificarlo). Aquí
- Los tamaños y posiciones de los formularios utilizados se almacenan, permitiendo una mejor experiencia del usuario. Aquí.
- Posibilidad de utilizar vistas cuando se utilice un motor PostgreSQL. Esto, entre otras cosas, permite una mejor integración de los datos de otros programas con AbanQ. Aquí
- Corrección de un bug por el que no se filtraban adecuadamente campos con valores int, uint o double. Aquí.
- Incorporación del estilo Windows XP (esto no lo incluye la versión original de AbanQ).
- El código de la integración con JasperServer que se verá en siguientes artículos.
Sólo tenéis que descomprimir el archivo .zip que os adjunto. Una vez hecho esto, si utilizáis Windows, debéis ajustar las variables señaladas en los archivos setenv.bat y build-config.bat. Si utilizáis Linux, debéis hacer lo mismo en el archivo setenv.h
Para compilar en Linux, necesitáis gcc, g++ y demás herramientas que seguro tendréis instaladas. Para compilar en Windows, necesitáis descargaros, MinGW. Además, es conveniente instalar el MinGW API for MS-Windows de aquí.
Compilación bajo Windows. Ubicados en el directorio donde habéis descomprimido las fuentes, ejecutar en este orden (por si no me explico bien haced un Inicio->Ejecutar-> cmd y cd al directorio en el que tengáis las fuentes ;-):
setenv.bat build-config.bat build-pthreads.bat build-qt.bat build-qsa.bat build-abanq.bat
Para los que estéis en Linux, es tan sencillo, como desde una consola, y en el directorio de las fuentes, ejecutar
setenv.sh compilar-qt.sh compilar-qsa.sh compilar-abanq.sh
Por defecto, la versión Windows viene preparada para compilar una versión final con un cliente quick, y la versión de Linux, para compilar una versión debug y con cliente "pesado" o completo.
Tened en cuenta que hay dependencias cruzadas, que no están muy bien resueltas: Por ejemplo, flbase depende de kugar, y kugar depende de flbase... así que al construir por primera vez, puede que os de error (la librería de flbase quiere enlazar a la de kugar, pero la de kugar no está construida porque faltan archivos objetos de flbase que no pueden construirse sin hacer previamente un moc de flbase...). Solución si os perdéis un poco en estos temas: entrad directamente en los directorios (src/flbase o src/kugar) y haced ahí el make.
Espero que con estas herramientas muchos os animéis a compilar y a introducir modificaciones, y corregir los muchos fallos que seguro he cometido. Cuanto más crezca la comunidad, mejor para todos.
Nota: Muchas de las modificaciones necesarias para compilar bajo Windows, las proporcionó juancrobles, a través del foro de AbanQ en Google, a través de diversos hilos y del fichero Modificaciones_abanq2.3-v1.1.zip disponible aqui.
Sin trackbacks por el momento.

Enero 4th, 2010 - 18:03
Buenas tardes.
Lo primero, gracias por facilitar estos tutoriales acerca de abanq.
Estoy intentando compilar abanq en ubuntu x64, pero me da problema el hoard. Parece que no se entiende con el qt.
Voy a ver si descargando aparte el hoard y compilando se soluciona, aunque esto de dependencias de versiones en abanq es complicado.
Un saludo.
Enero 7th, 2010 - 15:20
No hay forma, se queda parado en el qsa y de ahí no sale :’(
Enero 7th, 2010 - 17:49
¿Qué problemas te da hoard? Pon una traza, a ver si puedo echarte una mano…
Enero 7th, 2010 - 17:49
Dame algún dato más… alguna traza para ver en qué punto se te queda.
Saludos
Enero 12th, 2010 - 17:19
Buenas de nuevo.
Bajo el código.
Ejecuto sh setevn.sh
Ejecuto sh compilar-qt.sh
Este es el error:
QMAKESPEC has not been set, so configuration cannot be deduced.
Error processing project file: /home/sbellver/Descargas/abanq/src/hoard/hoard.pro
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.
Enero 12th, 2010 - 17:46
Copiando libhoard.so descargado desde la web de hoard y puesto en src/qt/lib parece que tira, pero se queda en:
Building 2nd stage configure
main.cpp: In function ‘void dumpMessages()’:
main.cpp:46: warning: format not a string literal and no format arguments
configutils.cpp: In function ‘bool checkLicense()’:
configutils.cpp:340: warning: suggest parentheses around ‘&&’ within ‘||’
configutils.cpp:378: warning: suggest parentheses around ‘&&’ within ‘||’
Con el libhoard.so compilado por mi me fallaba antes de este paso, aunque el qsa se quedaba allí.
Voy a darle el boto de confianza a ver lo que tarda en compilar si hace algo.
Enero 12th, 2010 - 17:55
Joder, voto con “b”…
Lleva 10 minutos sin dar ningún mensaje en absoluto.
Enero 12th, 2010 - 18:18
Sigue enganchado en el mismo sitio.
Además, si intento hacer un sh compilar-abanq.sh:
Qmake version: 1.07a (Qt 3.3.8)
Qmake is free software from Trolltech ASA.
-e OK : qmake encontrado
-e Creando Makefiles con qmake…
QMAKESPEC has not been set, so configuration cannot be deduced.
Error processing project file: /home/sbellver/Descargas/abanq/src/advance/advance.pro
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.
make: *** No hay ninguna regla para construir el objetivo `install’. Alto.
Entre otros fallos similares
Enero 12th, 2010 - 18:57
Umm… Es evidente que por alguna razón QMAKESPEC no está bien puesto. Si te fijas, en setenv.sh hay una línea
OPT_QMAKESPEC=”linux-g++”
que prepara una variable para establecer esa variable. De hecho, en el ./compilar-qt.sh se debe ejecutar
./configure -platform $OPT_QMAKESPEC -prefix $PREFIX -R$PREFIX/lib -L$PREFIX/lib $QT_DEBUG -thread -no-pch -no-exceptions -buildkey $
BUILD_KEY -stl -no-cups -disable-opengl -xft -xrender -no-nas-sound -no-nis -qt-libjpeg -qt-gif -qt-libmng -qt-libpng -qt-imgfmt-png
-qt-imgfmt-jpeg -qt-imgfmt-mng
y ese configure, creará una serie de ficheros .qmake.cache que deberán ser copiados a todos y cada uno de los directorios que serán compilados utilizando las librerías Qt como soporte.
Es decir, copia al directorio de hoard el archivo .qmake.cache de qt
cp ./qt/.qmake.cache ./hoard
y a ver si te compila…
Enero 12th, 2010 - 18:58
Definitivamente, creo que te falta copiar el fichero .qmake.cache que encontrarás en el directorio src/qt a los directorios src/hoard src/advance…
Enero 12th, 2010 - 19:17
Aún así el problema con el hoard estaba solucionado comentando la línea de compilación y copiando el libhoard.so a su sitio.
Sin embargo, sigue fallando en la compilación de qsa :(
Enero 12th, 2010 - 19:31
Bueno, a ver, por partes. Vamos a olvidarnos de scripts…
1.- Doy por hecho que has compilado Qt 3.3
2.- Doy por hecho que has compilado hoard.
3.- Entras en src/qsa y aquí es donde tienes problemas.
Yo también tuve a veces problemas al intentar compilar aquí. Si entraba en src/qsa, hacía un configure y un make, se quedaba colgado para siempre en algunas ocasiones… La solución fue:
Entrar en src/qsa/src y aquí hacer un
qmake
make
make install
y así conseguí compilar e instalar qsa…
Enero 12th, 2010 - 19:36
No hay forma:
Compilando QSA…
«../qt/.qmake.cache» -> «.qmake.cache»
«../qt/.qmake.cache» -> «src/qsa/.qmake.cache»
«../qt/.qmake.cache» -> «src/plugin/.qmake.cache»
Using Qt library in /home/sbellver/Descargas/abanq/build.
Building 2nd stage configure
configutils.cpp: In function ‘bool checkLicense()’:
configutils.cpp:340: warning: suggest parentheses around ‘&&’ within ‘||’
configutils.cpp:378: warning: suggest parentheses around ‘&&’ within ‘||’
Y ahí se queda el jodío.
¿Alguna idea mágica? Estoy como loco por probar las mejoras que has introducido :)
Enero 12th, 2010 - 19:57
A mí me pasa eso mismo si hago lo que te decía en el comentario anterior. Es decir, si intento hacer el configure. Vamos a suponer que qsa está en ./src/qsa.
Haz un cd ./src/qsa/src
asegúrate de tener definidas en el entorno las variables QTDIR=$DIRECTORIO_DE_ABANQ/src/qt y en tu PATH=$DIRECTORIO_DE_ABANQ/src/qt/bin:$PATH y con eso haz un
qmake src.pro
make
make install
y sáltate el hacerlo desde el raíz de ./src/qsa
La razón está en los ficheros del directorio del configure2 en los que hay algo raro (se mete en un bucle infinito por alguna razón rara que estuve mirando en su tiempo). Pero como encontré este atajo, lo olvidé.
De todas formas, este error que te da a tí, no daba siempre, daba de vez en cuando (no sé muy bien porqué). Dime si te funciona.
Por cierto, las mejoras que ha introducido seguro que tienen mil bugs, así que todos los fallitos que encuentres, dímelos para ir puliéndolos ;-)
Enero 13th, 2010 - 10:54
Aún así me tira varios errores.
El qmake lo hace bien, pero el make…
qseditor.cpp:318: error: ‘class QSAEditor’ has no member named ‘copy’
qseditor.cpp: In member function ‘void QSEditor::selectAll()’:
qseditor.cpp:336: error: ‘class QSAEditor’ has no member named ‘selectAll’
qseditor.cpp: In member function ‘QTextEdit* QSEditor::textEdit() const’:
qseditor.cpp:508: error: cannot convert ‘QSAEditor*’ to ‘QTextEdit*’ in return
make[1]: *** [.obj/debug-shared-mt/qseditor.o] Error 1
make[1]: se sale del directorio `/home/sbellver/Descargas/abanq/src/qsa/src/qsa’
make: *** [sub-qsa] Error 2
sbellver@rosita:~/Descargas/abanq/src/qsa/src$
estas son las últimas líneas.
Enero 13th, 2010 - 12:08
Juraría que te faltan includes o algo así… ¿El directorio abanq/src/qsa/src/editor tiene archivos? ¿Tiene el archivo qsaeditor?
Qué cosa más rara…
Enero 13th, 2010 - 16:15
Sip, tiene archivos y en concreto el que mencionas (cpp y h)
Enero 13th, 2010 - 18:48
Jarl… reconozco que me estás pillando… ahora mismo, no caigo en qué puede estar pasando. ¿Te importa si recopilamos? Enumérame todos los pasos que has seguido, a ver si falta algo…
Enero 13th, 2010 - 21:21
Ok, sin problemas.
1- Descargar código
2- Descomprimir código
3- Ejecutar sh setenv.sh
4- Ejecutar sh compilar-qt.sh
Fallo en hoard
Descargar libhoard.so para x64 desde la página
Copiar libhoard.so en src/qt/lib (si mal no recuerdo)
Comentar la compilación de hoard y su copia a la carpeta antes mencionada
5- Ejecutar compilar-qt.sh
Se queda en la compilación de QSA, bucle infinito al parecer (más de una hora sin hacer nada)
6- Definir variables QT y PATH como indicabas
7- qmake y make en el directorio src/qsa/src
Fallo al hacer el make.
Y hasta aquí podemos leer :(
Enero 14th, 2010 - 10:53
Ummm!!! Así que estamos compilando para 64 bits!! jeje. Reconozco que no he probado haber compilado para 64 bits. (No me había dado cuenta). Claro, ahora me explico porqué no te compilaba hoard, y porqué te lo tuviste que bajar de la web. (Es que la versión distribuida, evidentemente es la de 32 bits).
Vale. A ver. El paso 5, hasta cierto punto es “normal”, es decir, lo del bucle infinito, no me preocupa, ya que es en una herramienta configure, que (creo) no aporta gran cosa. El asunto es el paso 7, que nos devuelve a la situación justo antes de hacerte escribir este post. Vamos, que te he hecho perder el tiempo, aunque al menos me ha servido para saber que trabajamos en 64 bits.
Comprobemos una cosa: Mira, la clase que te está dando problemas QSEditor, internamente define una clase QSEditorPrivate, que utiliza a su vez a la clase QSAEditor. QSAEditor está definida en el directorio src/qsa/editor. Esta clase a la vez extiende a la clase Editor (e incluye a editor.h). Si te fijas, en src/qsa/editor hay un archivo, editor.pri que define lo siguiente:
HEADERS += $$EDITORDIR/qsaeditor.h \
$$EDITORDIR/qsacompletion.h \
$$EDITORDIR/qsabrowser.h \
$$EDITORDIR/qsasyntaxhighlighter.h \
$$EDITORDIR/qsaeditorinterface.h
# $(QTDIR)/tools/designer/editor/editor.h \
# $(QTDIR)/tools/designer/editor/parenmatcher.h \
# $(QTDIR)/tools/designer/editor/completion.h \
# $(QTDIR)/tools/designer/editor/viewmanager.h \
# $(QTDIR)/tools/designer/editor/markerwidget.h \
# $(QTDIR)/tools/designer/editor/conf.h \
# $(QTDIR)/tools/designer/editor/browser.h \
# $(QTDIR)/tools/designer/editor/arghintwidget.h \
# $(QTDIR)/tools/designer/editor/cindent.h
Como ves, ahí se define de dónde debe coger esos archivos que te faltan. Al tener problemas con ese bucle infinito del paso 5, y saltárnoslo, no estamos fijando adecuadamente la variable $EDITORDIR… (Ese fichero está modificado por Infosial). Solución parcial. Descomenta las líneas que contienen $QTDIR y comenta las que tienen $EDITORDIR y vuelve a hacer el make a ver qué ocurre.
Repite este procedimiento en todos aquellos archivos en los que pudieras tener errores similares.
Enero 15th, 2010 - 15:52
Bueno, he tenido que reinstalar porque el nautilus me estaba matando el PC.
Además de lo que tengo pendiente por hacer, ¿podrías subir una versión compilada del ejecutable en windows y linux? Por cierto, tengo pendiente también hacer la compilación en windows.
Si lo que me está dando problemas es el x64, meto una máquina virtual con x32 y a correr :P
Enero 18th, 2010 - 12:38
La compilación en Windows también “revienta” con el Qt :( en qbitarray.cpp, nada más empezar.
Enero 18th, 2010 - 20:19
Y el error es….
Enero 18th, 2010 - 22:04
lo siento, no tengo la máquina delante, pero algo así como que qbitarray.o es necesario para qbitaray.cpp en el directorio /qt/src/tools
Disculpa si insisto, pero ¿podrías subir alguna versión compilada? cada vez lo veo más negro ;)
Enero 19th, 2010 - 14:53
Subo una versión compilada. Voy a preparar una y la pongo disponible.
Enero 19th, 2010 - 15:04
GRAAAACIAS, si puedes ponerlo tanto en windows (quick) como en linux (dev) sería perfecto.
De todas formas no desisto de compilarlo.
Enero 26th, 2010 - 11:11
Como va la cosa? :)
Supongo (y sé) que el principio de año no es como para tener demasiado tiempo libre XD
Febrero 27th, 2010 - 12:03
David,
soy novato, estoy intentando compilar, pero no lo logro. Debe ser un problema de configuración de de una versión distinta de Qt.
Mire yo tengo correctamente instalada la versión QT4 y MinGW en el directorio C:\Qt\4.6.2 y he definido las variables de entorno:
C:\Qt\4.6.2\bin
C:\MinGW\Bin
QMAKESPEC win32-g++
¿qué tengo que modificar para lograr la compilación
Ah! el archivo que usted proporciona para compilar lo he puesto en:
c:\FacturaLux
Marzo 16th, 2010 - 18:33
AbanQ no puede compilarse con la versión de Qt 4. Necesariamente tiene que compilarse contra las versiones de Qt 3.3… y concretamente con las que se incluyen en los archivos que distribuye InfoSial o que pongo por aquí, porque existen pequeñas modificaciones en los fuentes de Qt.
Teóricamente, la versión 3 de AbanQ está desarrollado con Qt 4.