Search
Write a publication
Pull to refresh

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")
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.