Qt LGPL版を入れてみた。

Qtってのは、プラットフォームを選ばないGUIツールキットです。
2009年3月にLGPL版が出た事でさらにとっつきやすくなりました。
Qt LGPL版の利点は、

  • オリジナル部分のソースコードの開示は強制ではない事。
  • ただし、開示されているソースコードを改変して使用した場合は改変部分のコードを公開する必要がある

つまり、Qt LGPL版を使って作ったオリジナルなプログラムのソースコードは晒さなくてもいいけど、
Qt LGPL版自体のコードを改変したり、オリジナルのソースコードが開示されているものを改変して利用した時は、その改変した部分のコードを開示してね。
というもの。
またQt LGPL版を使ってライブラリを作った場合、それを使うプログラムのソースコードは開示しなければならない。
これによって、有用なプログラムやライブラリをQt LGPL版で開発しやすくなったわけです。


しかし、参考になるページが日本ではまだ少ないのが残念。
英語のリファレンスなら豊富にあるんだけどね・・・


今回は実用的な部分までは行きませんが、
導入と、QtCreatorでのビルドの仕方と、スタティックリンクする手順の3つを書きます。

導入

公式ページからダウンロード。
http://www.qtsoftware.com/downloads
Choose LGPL/Free を選択。


プラットフォームにあったSDKをダウンロード。
Download Qt SDK for Windows* (178Mb)
Windowsならこの辺をインストール。

インストールする場所はどこでもいいが、空白が入ると都合が悪くなるらしいので、空白を含まないように注意する。
インストール場所は以降「Qtフォルダ」と置いている。


導入時に、
QtとMinGWの導入と、"post mortem debugger"の導入、デスクトップのショートカットの作成
これらが選べるので、QtとMinGWは必ず選択。あとはお好み。
既にMinGWを入れていても、このMinGWはQt下のmingwフォルダに作られるので、
そこへのPathを自分から指定しない限り、競合することはない。


インストールが始まるので終わるまで待つ。


必要かわからないがQt Creatorでcmakeの実行ファイルを指定するところがあるのでcmakeを導入する。


cmake
http://www.cmake.org/cmake/resources/software.html


ダウンロードし、解凍。
その後、Pathが通ったところの"上の階層"に、中にあるフォルダ郡を放り込めばいい。


Qt Creator

Qt Creatorを起動し、最初に簡単な設定をする。

  1. 「ツール」→「オプション」で必要な設定をする。
  2. 「CMake」→cmake実行ファイルを指定
  3. 「Qt4 (Qt Versions)」→自動検出されていない場合は、「+」で手動で設定する。


プロジェクトを作ってみる

  • 「ファイル」→「新規作成」
  • プロジェクトの「Qt4 GUI アプリケーション」を選択。

名前を適当につけ(helloなど)、プロジェクトの保存先を指定。
デフォルトだとMy documentになるので、その下にQtフォルダを作ってそこを指定した。
次に導入する必須モジュールを選ぶ。
今回はたいしたことはしないので、デフォルトのままでOK。
その後、クラス情報を指定するが、特別指定する必要はない。
完了を押すとプロジェクトが出来上がる。


今回は何もせず、そのまま[ビルド]→[プロジェクト"hello"をビルド]を実行。
正常に終わると左下の「ビルド」と書かれている下のバーが限界まで伸び、緑色になる。
バーが赤色になっている場合はエラーで、そこをクリックすることでログを見ることができる。


実行はその更に下にある、再生ボタンのようなボタンを押すと実行される。
特に何もおいていないので、フォームウィンドウが出る実行ファイルが出来上がる。


また、[ビルド]→[ビルド構成の設定]→[Release]
と指定することで、配布用のプログラムが出来上がる。
ただし、配布するときは、Qt4Core.dll, Qt4Gui.dll, mingwm10.dll の同梱が必要になる。


スタティックリンク

このままリリースでビルドしても、
Qt4Core.dll, Qt4Gui.dllなどのDLLが無いと実行できない。
配布時などに入れるのもめんどくさいので、それらはスタティックリンクにできると便利だ。


それにはQtの再コンパイルが必要。
Qtにはcounfigure.exeがあり、MinGWもついてくるので、容易に行える。
既に導入したMinGWを使ったところg++周りの問題でうまくいかなかったので、
付属のMinGWにpathをsetしなおし、実行した。


コマンドプロンプトを開く。

 cd /d Qtフォルダ\qt
 set path=Qtフォルダ\mingw\bin
 configure -static -release
 mingw32-make


configure -static -releaseを実行すると以下の入力を求められる。

Which edition of Qt do you want to use ?
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.

'o'をタイプする。

You are licensed to use this software under the terms of
the GNU General Public License (GPL) version 3
or the GNU Lesser General Public License (LGPL) version 2.1.

Type '3' to view the GNU General Public License version 3 (GPLv3).
Type 'L' to view the Lesser GNU General Public License version 2.1 (LGPLv2.1).
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.

'L'をタイプすると、ライセンス規約が表示される。
'y'とタイプすると、同意したことになり、コンパイルが始まるので眺める。結構長い。
以下が表示されるとconfigureが終了。

Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.

mingw32-makeでmakeが始まる。とても長い。(4時間前後)
終われば、staticな実行ファイルが生成できるようになる。
ただ、実行ファイルサイズが極端に増えるので注意。
(staticにしなくても、同じぐらいのサイズ。)


また、mingwm10.dll の依存関係を切るには、
Makefile.releaseのLFLAGSから -mthreads を削除すればいい。