1. Introducción
Tengo la necesidad de probar Oracle, así que decidí compilar el driver QOCI para Qt5. En este pequeño tutorial verémos como compilar el driver QOCI para poder conectarnos al gestor de base de datos Oracle desde nuestras aplicaciones Qt5. La compilazión se realizará para la versión distribuida de Qt para Visual Studio 2010.
1.1. Contenido
- Desacarga de herramientas escenciales.
- Estableciendo las variables de entorno para la compilación.
- Instalación del driver QOCI
2. Requerimientos
- Qt 5.1.0 o mayor para VS 2010, lo puedes descargar desde aquí.
- Microsoft Visual Studio 2010, puedes utilizar la versión de pago, la Express o la que viene en el Windows SDK 7.
- Oracle 12g o mayor(no lo he provado con versiones anteriores). Para esto necesitamos el INstant Client SDK, lo podemos descargar desde aquí. Para este tutorial se usó instantclient-basic-nt-12.1.0.1.0.zip(Bibliotecas para tiempo de ejecución) además del instantclient-sdk-nt-12.1.0.1.0.zip.(SDK, include files y ejemplos).
3. Instalando cabeceras de desarrollo OCI (Oracle Call Interfaz)
Primero, por cuestiones de orden, crearemos una carpeta llamada oracle en el disco c:\, finalmente debemos descomrimir el archivo instantclient-sdk-nt-12.1.0.1.0.zip en la carpeta oracle antes creada. Esto creará la carpeta instantclient_12_1 dentro de la carpeta oracle, teniendo las siguientes carpetas(rutas completas):
C:\oracle\instantclient_12_1\help C:\oracle\instantclient_12_1\sdk C:\oracle\instantclient_12_1\sdk\lib C:\oracle\instantclient_12_1\sdk\include
4. Preparando el entorno
Abrimos una consola Qt, para esto nos dirigimos a Inicio->Qt5.1.0->5.1.0->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 todabia el entorno, debemos ejecutar los espacios anteriores correctamente.
Ahora nos dirigmos a la carpeta del driver oci.pro, para esto debemos ejecutar el siguiente comando:
cd C:\Qt\Qt5.1.0\5.1.0\Src\qtbase\src\plugins\sqldrivers\oci
En mi caso la versión de Qt5 que estoy utilizando es la 5.1.0, deberás cambiar la ruta según la versión de Qt5 que tengas. Ahora ejecutaremos el comando qmake:
qmake "INCLUDEPATH+=C:\oracle\instantclient_12_1\sdk\include" "LIBS+=-LC:\oracle\instantclient_12_1\lib\msvc\ " oci.pro
Ahora compilamos:
nmake
Ahora instalamos:
nmake install
Esto creará los archivos qsqloci.dll, qsqlocid.dll y qsqlocid.pdb en C:\Qt\Qt5.1.0\5.1.0\msvc2010_opengl\plugins\sqldrivers. La carpeta dependerá de la versión de Qt que estes usando.
4.1. Reditribución
Para que nuestro driver funcione necesitamos la BIblioteca de Enlace DInámico(.dll) OCI.dll, para esto debemos descomprimir instantclient-basic-nt-12.1.0.1.0.zip(extraer aquí), esto creará una carpeta instantclient_12_1, el archivo oci.dll está en la raiz de la carpeta desomprimida.