Как стать автором
Обновить

Visual Studio 2008 + QT 4.6.2 + PostgreSQL 8.4

Предистория:


Для личного использования есть база данных. Клиент для неё написанный на QT под Убунтой работает как часы. Возникла острая необходимость этот клиент портировать на Windows. QT – кросcплотформенный проблем быть не должно. Пол года и наконец-то я добился результата.

Почему не mingw?
Ну не смог я скомпилировать с поддержкой PGSQL

Почему не плагинами подключаю драйвер для PGSQL?
Вечная проблема. Драйвер компилируется, но не работает. 5 месяцев убил на решение этой проблемы. Пришлось найти альтернативу.

Собственно сам процесс:



Устанавливаем Visual Studio 2008.
Качаем устанавливаем PostgreSQL 8.4 желательно не очень далеко, а где-то примерно c:\pgsql\
Качаем и устанавливаем QT 4.6

Теперь нужно скомпилировать QT средствами VS2008 и тут сразу же включаем поддержку драйвера psql для PostgreSQL

Устанавливаем переменные окружения:

QTDIR=C:\Qt\4.6\qt;
QMAKESPEC=win32-msvc2008;
добавляем C:\Qt\4.6\qt\bin в Path;


За эту часть спасибо Сан Санычу:

дистрибутив версии 4.6 содержит забытые авторами временные файлы, которые приводят к ошибкам при сборке (настоящий opensource не собирается с первого раза, но зато всегда можно найти ответ на официальном сайте), поэтому нужно удалить файлы:
C:\Qt\4.6\qt\src\script\tmp\moc\debug_shared\mocinclude.tmp
C:\Qt\4.6\qt\src\script\tmp\moc\release_shared\mocinclude.tmp
C:\Qt\4.6\qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\mocinclude.tmp
C:\Qt\4.6\qt\src\3rdparty\webkit\WebCore\tmp\moc\release_shared\mocinclude.tmp



Запускаем консоль VS (Visual Studio Tools -> Командная строка Visual Studio 2008);

cd C:\Qt\4.6\qt
configure -qt-sql-psql -I c:\pgsql\include -L c:\pgsql\lib
o – (у меня опенсорс версия)
y – (я согласен с лицензией)
nmake


6-7 часов занимает на моём старичке Dell Inspiron 1300
Качаем дальше

visual-studio-add-in

устанавливаем

В Visual Studio, в Qt Options указываем версию вместе с путем к установленному Qt.

Всё готово.

Для проверки в код проекта можно вставить

qDebug() << QSqlDatabase::drivers();

Должно выдать аналог:

("QPSQL7", "QPSQL", "QSQLITE")
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.