Recompilar el driver de MySQL de Qt en MinGW64

Actualmente estoy trabajando en un proyecto desarrollado con el framework Qt.

En este proyecto necesito conectar a una base de datos MySQL pero Qt ya no incluye la librería por problemas de licencias por lo tanto necesito compilarla yo mismo.

En la documentación de Qt se cuenta como hacerlo pero la he encontrado imprecisa y he tenido que investigar mucho y así es como lo he hecho.

Tengo Qt en la ruta C:\Qt y la versión 6.4.0. Sin embargo podrías tener otra versión. Están también las versiones 6.3.2, 6.2.4 e incluso la 5.15.2.

De la versión que sea que tengas necesitas tener también el código fuente.

En mi caso el código fuente esta en C:\Qt\6.4.0\Src\

También necesitarás descargar mysql-connector-c.6.1.11 de https://downloads.mysql.com/archives/c-c/?version=6.1.11&os=src

En la documentación de Qt usan mysql-8.0.22-winx64. En mi ejemplo decidí usar mysql-connector-c-6.1.11-winx64 pero puedes usar cualquiera.

Puedes escoger entre las versiones 32 y 64 bits.

Es importante que el zip que descargues lo descomprimas en una ruta sin espacios. En mi caso la ruta es C:\mysql-connector-c-6.1.11-winx64

Si lo instalaste de el .msi, probablemente no funcionará porque esta en C:\Program Files\MySQL\MySQL Connector C 6.1 el cual contiene espacios.

Ahora puedes ir al directorio C:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers y crear una carpeta donde para construir y en ella configurar, compilar e instalar los drivers con los siguientes comandos:

cd C:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers

mkdir build-sqldrivers 

cd build-sqldrivers 

qt-cmake ^
	-D CMAKE_MAKE_PROGRAM="C:\Qt\Tools\Ninja\ninja.exe" ^
	-G Ninja C:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers ^
	-D CMAKE_INSTALL_PREFIX="C:\Qt\6.4.0\mingw_64" ^
	-D MySQL_INCLUDE_DIR="C:\mysql-connector-c-6.1.11-winx64\include" ^
	-D MySQL_LIBRARY="C:\mysql-connector-c-6.1.11-winx64\lib\libmysql.lib"

Si todo salió bien veras esta pantalla:

Ahora solo necesitas lanzar estos dos comandos:

  
cmake --build .

cmake --install .

Obviamente necesitas poner tus propias rutas.

En la documentación de Qt no parece que hayan incluido el parámetro -D CMAKE_MAKE_PROGRAM="C:\Qt\Tools\Ninja\ninja.exe". el cual es clave porque de otra manera no encontrará el programa ninja.

Una vez hecho, necesitas hacer algo mas y eso es copiar el fichero C:\mysql-connector-c-6.1.11-winx64\lib\libmysql.dll on en la carpeta donde generas tus executables o en la ruta C:\Qt\6.4.0\mingw_64\bin

También necesitas distribuir tu aplicación con ese fichero.

Espero que sea de ayuda.

Comentarios

Entradas populares