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です。