2016年1月17日 星期日

build qt 4.8.5 database drvier postgresql plugin - windows xp

env:
windows xp
postgresql 9.3
qt 4.8.5
mingw 4.8.0

我將 postgresql 9.3 安裝到 C:\pgsql9.3

qt 文件一樣有提到如何做:
qt-everywhere-opensource-src-4.8.5/doc/html/sql-driver.html#qpsql

cd $QTDIR/src/plugins/sqldrivers/psql
qmake "INCLUDEPATH+=/usr/include/pgsql" "LIBS+=-L/usr/lib -lpq" psql.pro
make

不過和 build mysql driver 類似, 我沒用這方法, 修改了以下檔案。


修改 src/plugins/sqldrivers/psql/psql.pro
cat src/plugins/sqldrivers/psql/psql.pro
TARGET = qsqlpsql

SOURCES = main.cpp
include(../../../sql/drivers/psql/qsql_psql.pri)

INCLUDEPATH+="C:\pgsql9.3\include"
LIBS+="C:\pgsql9.3\lib\libpq.dll"

include(../qsqldriverbase.pri)

不知道是不是因為我使用 static link 的關係, 我還必須修改 src/sql/drivers/psql/qsql_psql.pri
cat src/sql/drivers/psql/qsql_psql.pri
HEADERS += $$PWD/qsql_psql.h
SOURCES += $$PWD/qsql_psql.cpp
LIBS += "c:\pgsql9.3\lib\libpq.lib"
INCLUDEPATH += "c:\pgsql9.3\include"
unix|win32-g++* {
  LIBS += $$QT_LFLAGS_PSQL
  !contains(LIBS, .*pq.*):LIBS += -lpq
  QMAKE_CXXFLAGS *= $$QT_CFLAGS_PSQL
} else {
  !contains(LIBS, .*pq.*):LIBS += -llibpq -lws2_32 -ladvapi32
}

D:\qt-everywhere-opensource-src-4.8.5>configure -static -release -no-exceptions -no-qt3support -qt-sql-psql -qt-sql-odbc -qt-sql-sqlite -no-opengl

不過編譯出來的 qt 程式需相依 pgsql 9.3 很多 dll, 我直接複製到 C:\pgsql9.3\bin, 省下那些尋找 dll 的麻煩問題。


產生後的執行檔需要不少 pgsql dll, 我直接把 qt 執行檔 copy 到 pgsql 目錄下 (C:\pgsql9.3\bin), 省下找尋 dll 的麻煩事情。

qt/windows static link, 請參考:
in windows using static link for QT application

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。