WindowsでQtアプリの配布パッケージを作る(windeployqt.exeを使ってみた)

Qtで作成したアプリケーションを配布するとき、必要なライブラリ(dllとかsoとかdllibとか)を実行ファイルと一緒にする必要があります。
必要なライブラリを調べるのが意外と面倒だったりします。
Macではmacdeployqtというツール以前から使えていたのですが、他の環境ではありませんでした。

が、これから違います。
Qt 5.2からWindows用にも作成されSDKに同梱されるようになりました。
このツールのすばらしいところは、QMLファイルのimport構文を解析して必要なプラグインも同梱してくれるところです。
正直、ここが一番面倒でしたので。

この記事は、Qt 5.2.1 MSVC2012版で書きました。

/// 入手場所 ///
標準のインストールフォルダだと以下のあたりにあります。(VS2012版の例)
C:\Qt\Qt5.2.1\5.2.1\msvc2012_64\bin

/// 使用方法 ///
簡単で以下の書式でOKです。

> windployqt <実行ファイルのパス>

これで、実行ファイルと同じフォルダにライブラリをコピーしてくれます。
QMLファイルがある場合は、以下のようにします。

> windeployqt --qmldir <qmlのパス> <実行ファイルのパス>

QMLファイルのフォルダは中を再帰的に調べてくれますのでトップのフォルダを指定すればOKです。

ライブラリをコピーして配布パッケージを作るフォルダを実行ファイルが現在あるところから変更することもできます。
(実行ファイルはコピーされません)

> windployqt --dir <コピー先のパス> <実行ファイルのパス>

その他のオプションのことは「windeployqt.exe -h」です。

/// 注意 ///
・1つコピーされるライブラリが変です。
 このファイルだけはツール実行後に手動でコピーしてください。
  誤:D3Dcompiler_47.dll
  正:d3dcompiler_46.dll
・サードパーティ製のライブラリはコピーされないようです。
 手動でコピーしてください。
・QMLファイルがリソースに含まれる場合はサーチしてくれません。
 「--qmldir」オプションでプロジェクトにある生データのパスを指定してください。
・OpenSSL系のライブラリはコピーされないようです。(調べようがないですよね)
 手動でコピーしてください。