среда, 7 марта 2012 г.

Сборка Qt проекта с подключением к PostgreSQL в linux (Ubuntu)

(релиз Qt SDK на момент написания данной статьи - 1.2.0)

В отличие от windows версии Qt SDK, где изначально есть все необходимые драйверы баз данных, в версии для linux есть разве что драйвер QSQLLITE.
Список возможных драйверов вы можете просмотреть через QSqlDatabase::drivers().
Если я прав, подозреваю что вам нужна следующая статья:



Первым делом необходимо проверить наличие необходимых библиотек для сборки драйвера. Обычно они находятся в /usr/include/postgresql, но могут быть и в других папках (у товарища они лежали в pgsql, как вариант, ищите по файлу libpq-fe.h). Если у вас такой папки нет, значит необходимо доставить некоторые пакеты.
У меня стоят следующий пакеты, связанные с PostgreSQL:

postgresql
postgresql-client-common
postgresql-8.4
postgresql-common
postgresql-client-8.4
postgresql-server-dev-8.4

Версия не принципиально, главное чтобы имена были похожи.
Кроме того нам необходимо установить исходные файлы Qt библиотеки. Устанавливаются исходные коды в Qt SDK maintenance tool .
Следующим пунктом - открываем проект драйвера psql который лежит в папке с исходными файлами библиотеки. У меня QtSDK лежит в папке /home/aust/Dev, соответственно проект драйвера лежит в /home/aust/Dev/QtSDK/QtSources/4.8.0/src/plugins/sqldrivers/psql

Проекту необходимо подсказать, где лежат заголовочные файлы PostgreSQL.
для этого в файле проекта (.pro) добавляем следующую строку: 

INCLUDEPATH += /usr/include/postgresql


(Не забывайте что у вас может быть и другая папка). Собираем драйвер (Сборка -> собрать всё). В каталоге сборке находим файл libqsqlpsql.so и копируем его в папку /home/aust/Dev/QtSDK/Desktop/Qt/4.8.0/gcc/plugins/sqldrivers (в вашем случае возможно и другая).

После этого в любом проекте можете проверить наличие 2-х новых драйверов через QSqlDatabase::drivers() .








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

  1. Последнее время я использую Valentina Studio для работы с PostgreSQL на ubuntu. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview

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