пятница, 17 августа 2012 г.

Собираем драйвер QPSQL для Qt4.

Пришлось по работе написать простое приложение для парсинга файла.Т.к приложение будет работать под виндами, то столкнулся с тем что при установки QtSDK и библиотек Qt, отсутствует драйвер для PostgreSQL. Пока рылся в интернете сломал мозг от тех инструкций что там написаны. Я ставил из offline sdk, в котором по умолчанию отсутствует исходники(QtSource). Поэтому запускаем SDKMaintenanceTool и доставляем исходники. Потом ставим PostgreSQL, но только 32-битный,желательно в корень чтобы не было пробелов в путях, я установил в C:\PostgreSQL, и добавляем в переменные PATH, пути к каталогам bin, lib, include. У меня пути были такие:
c:\PostgreSQL\bin\
c:\PostgreSQL\lib\
c:\PostgreSQL\include\

SDK я  ставил по умолчанию в C:\QtSDK. Далее запускаем консоль, "Пуск->Все программы->QtSDK->Desktop->Qt 4.7.4 for Desktop (MinGW)", если используете MS Visual Studio, то выбираем консоль MSVC, в зависимости от используемой MS Visual Studio и версии библиотеки Qt. После запуска идём к исходникам драйвера.

cd C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\psql 
Примечание: у меня библиотека версии 4.7.4, если Вы используете другую версию библиотеки, то должны компилировать драйвер для своей версии. 

Далее выполняем:
qmake -o Makefile "INCLUDEPATH+=c:\\PostgreSQL\\include" "LIBS+=c:\\PostgreSQL\\lib\\libpq.lib" psql.pro

После чего выполняем:
mingw32-make install clean -f Makefile.Debug
mingw32-make install clean -f Makefile.Release

После чего создаём простое консольное приложение и смотрим список появившихся драйверов:
#include <QtSql>
#include <QtCore/QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << QSqlDatabase::drivers();
    return a.exec();
}
Вывод должен быть примерно таким

 
Вот и всё. Приятной работы. :)

1 комментарий:

  1. ... и не забываем про длл от PSQL чтоб скомпилированное приложение работало на другом компьютере. :-)

    ОтветитьУдалить