Compilar el driver MySQL QSQLMYSQL para Qt5 en Windows con la biblioteca estática mysqlclient.lib

Mysql -QT5
 

1. Introducción

Es muy común el uso de MySQL en proyectos basado en Qt Frameworks, en este pequeña guia veremos cómo compilar el driver QMYSQL haciendo uso de Microsoft Visual Studio 2010. En esta guia usaremos la biblioteca estática mysqlclient.lib, esto permitirá redistribuir nuestro driver qsqlmysql sin necesidad de distribuir también la biblioteca libmysql.dll.

1.1. Contenido

  1. Descarga de herramientas esenciales.
  2. Estableciendo las variables de entorno para la compilación.
  3. Instalación del driver QMYSQL

2. Requerimientos

  1. Qt 5.0.2 o mayor para VS 2010, lo puedes descargar desde aquí.
  2. Microsoft Visual Studio 2010, puedes utilizar la versión de pago, la Express o la que viene en el Windows SDK 7.
  3. MySQL 5.0 o mayor, debe incluir las cabeceras y bibliotecas de desarrollo. Yo opté por la versión 5.1 comprimida en zip(no el instalador) debido a que yo solo deseo compilar el driver, tal vez, en tu caso sería preferible que descargues el instalador después de compilar. La versión server comprimida en zip lo puedes descargar desde aquí.

3. Notas

Es muy probable que ya tengas instalado alguna versión de Qt para windows en tu computadora. Para esta guia es necesario que tengas instalado la versión para Visual Studio, aunque no recomiendo el uso de la versión de Qt para MINGW, por que no puedes enlazar estáticamente la biblioteca libmysql en MINGW.

4. Instalando MySQL

El paquete de MySQL descargado en el enlace anterior solo es un archivo comprimido, lo que debemos hacer es realizar la descompresión con tu herramienta preferida en el disco "C:"

Al terminar la descompresión queda la carpeta c:\mysql-5.1.70-win32, seguramente el nombre de la carpeta cambiará según la versión de mysql que hayas descargado, lo importante es renombrarla solo a c:\mysql, esto nos facilitará la compilación. Debemos fijarnos que las siguientes rutas estén accesibles:

C:\mysql\bin

C:\mysql\lib\opt

C:\mysql\include

5. Preparando el entorno

Abrimos una consola Qt, para esto nos dirigimos a Inicio->Qt5.0.2->5.0.2->MSVC 2010->Qt 5.0.2 for Desktop(MSVC 210), se nos abrirá una consola, en la misma consola nos indicará :

Remenber to call vcvarsall.bat to complete environment setup!

Ahora debemos de llamar al entorno de compilación de Visual Studio 2010, y esto depende el tipo de instalación que hayas realizado. En caso de haber usado el Windows SDK 7 deberás ejecutar la siguiente línea:

call "C:\Archivos de programa\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"

En caso de haber utilizado la instalación por el mismo instalador de Visual Studio 2010 (Versión Express o de pago) deberás ejecutar la siguiente línea:

call "C:\Archivos de programa\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"

Para probar que las variables se han establecido correctamente ejecutamos el comando nmake:

nmake

Nos dará la siguiente salida:

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1064: MAKEFILE not found and no target specified
Stop.

En caso de que salga "nmake" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. nos indica que no está establecido todavía el entorno, debemos ejecutar los espacios anteriores correctamente.

Ahora nos dirigimos a la carpeta del driver mysql.pro, para esto debemos ejecutar el siguiente comando:

cd C:\Qt\Qt5.0.2\5.0.2\Src\qtbase\src\plugins\sqldrivers\mysql

En mi caso la versión de Qt5 que estoy utilizando es la 5.0.2, deberás cambiar la ruta según la versión de Qt5 que tengas. Ahora ejecutaremos el comando qmake:

qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\opt\mysqlclient.lib -ladvapi32" "QMAKE_LFLAGS_DEBUG += /NODEFAULTLIB:libcmtd" "QMAKE_LFLAGS += /NODEFAULTLIB:libcmt" mysql.pro

Ahora compilamos:

nmake

Ahora instalamos:

nmake install

Esto creará los archivos qsqlmysql.dll, qsqlmysqld.dll y qsqlmysqld.pdb en C:\Qt\Qt5.0.2\5.0.2\msvc2010_opengl\plugins\sqldrivers. La carpeta dependerá de la versión de Qt que estés usando.

Sistemas Operativos: