刹那(せつな)の瞬き

Willkömmen! Ich heiße Setsuna. Haben Sie etwas Zeit für mich?

Qt5: MSSQL用ドライバを作成

ここまでの準備で、OSXからSQLServerにアクセスできる状態になりました。
しかし、残念ながら、まだQtからはアクセスできません。
QtのためにMSSQL用のデータベースドライバを作成する必要があります。

その対処方法は公式サイトのSQL Database Drivers  に記載されています。
でも、ただビルドするだけでは動きませんので、以下にポイントを書いておきます。

1. 準備するもの

(1) Qt5環境

Qt5環境はオフライン・インストーラ(dmg)からインストールしたQt 5.3.0 for Macです。
インストール時にSrcディレクトリを展開してください。でないと作業はできません。

(2) unixODBC/FreeTDSのヘッダとライブラリ

MacPortsからFreeTDSを"+mssql +odbc +universal"オプション付きでインストールします。
関連するファイルが/opt/local/includeと/opt/local/libに生成されます。
後述のqmakeでファイルが見つからない場合は、ここでミスした可能性が大きいです。

2. ドライバの生成

まずは公式サイトに従って、qmakeでMakefileを生成します。
あっさり書いてありますが、dmgからインストールした場合、とんでもなく深い階層になります。

Qt5.3.0は既定値のままホームディレクトリにインストールされているとして、

$ cd ~/Qt5.3.0/5.3/Src/qtbase/src/plugins/sqldrivers/odbc/
$ ~/Qt5.3.0/5.3/clang_64/bin/qmake "INCLUDEPATH+=/opt/local/include" "LIBS+=-L/opt/local/lib -lodbc"
$ make
$ cd ../../../../plugins/sqldrivers/

のように、ターミナルから実行します。
makeが終われば、無事にドライバが生成されているはずです。

~/Qt5.3.0/5.3/Src/qtbase/plugins/sqldrivers配下に、
libqsqlodbc.dylibとlibqsqlodbc_debug.dylibが生成されたら、次は配置です。

Qt5.3.0の動作環境では、既に同じ名前のdylibファイルが存在しています。
そのため、(お好みで)リネーム&コピーします。

$ cd ~/Qt5.3.0/5.3/clang_64/plugins/sqldrivers
$ mv libqsqlodbc.dylib libqsqlodbc.dylib.orig
$ mv libqsqlodbc_debug.dylib libqsqlodbc_debug.dylib.orig
$ cp ~/Qt5.3.0/5.3/Src/qtbase/plugins/sqldrivers/libqsqlodbc.dylib .
$ cp ~/Qt5.3.0/5.3/Src/qtbase/plugins/sqldrivers/libqsqlodbc_debug.dylib .

これで、Qt5からSQLServerにアクセスする準備が整ったと思います。

※2014.09.17追記

すみません。qmakeの後に余計な作業を書いてました。

$ make
$ make install

これでOKです。