Qt を試したけど玉砕した。

注意

下の作業をしたけど、あんまりうまくいきませんでした。玉砕です。
ただいま、いろいろ試行錯誤中ですが、自分用にメモとして書いておきます。

Qt のダウンロード

今回は、 http://qt.nokia.com/ から、Qt 4.7.0 (qt-sdk-win-opensource-2010.05.exe) をダウンロードした。LGPLが適用できるので、DLL版を使っている限りはソースを公開できない商用アプリでも利用できる。

Qt のインストール

あんまり考えたくないので、基本、デフォルトのままで。Visual Studio を使いたいので、逆に言えば、mingw版はいらないといえばいらないけど、なんかのためにインストールしておく(つまり、デフォルトのまま)。

Qt のビルド

基本的には、C:\Qt\2010.05\qt で作業を行う。コマンドプロンプトを開き、

cd C:\Qt\2010.05\qt

で Qt のディレクトリに移動。まぁ、直接、このディレクトリでコマンドプロンプトを開いてもかまいませんけど。

この後、Visual Studio のツール群を使えるように、vcbarsXXX.batを呼び出す。Visual Studio 2010 の x64 (64-bit) 環境なら、

cmd /K "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" amd64

Visual Studio 2010 の x86 (32-bit) 環境なら、

cmd /K "%VS100COMNTOOLS%vsvars32.bat"
configure

ライブラリ出力先をカスタマイズしたかったけど、オプションが分からないのでそっちは諦める。というか、後でどうにかする。

configure -debug-and-release -opensource -shared -exceptions
make

nmake を使いたいところですが、我が Core i7 マシンの SMT 8 論理コアを生かすために、jom を利用する(というか、そうしないと死ぬほど時間がかかるらしい。十数時間という単位で)。とはいえ、ダウンロードとかする必要はない。C:\Qt\2010.05\bin にすでにバイナリが存在していたので、それをそのまま使う。

..\bin\jom
エラーが出る

変なエラーが出た。

api\qscriptextensionplugin.h(43): Error: Undefined interface

適当にググった感じだと、2つのゴミファイルを削除すればどうにかなる模様。

del src/script/tmp/moc/debug_shared/mocinclude.tmp
del src/script/tmp/moc/release_shared/mocinclude.tmp

あとは何度か失敗するけど、jomを何度かやってるとうまくいく。理由はよく分からないけど、タイミングの問題??

インストールされるファイル群

注意しないといけないのは、これで作成されるlib/dll/pdbなどのファイル群は、C:\Qt\2010.05\qt\lib にそのまんま配置されてしまうこと。32-bitの開発しかしないとか、64-bitの開発しかしないというのであればそのまんまでも良いけど、共存しないといけないのであれば、x64 (64-bit)の方のバイナリをx64とか、amd64といったサブディレクトリに移動する。僕の場合は、各Visual Studioとの兼ね合いもあるので、vs2010-x64のようなサブディレクトリを作成し、そっちにライブラリを置くことにする。

mkdir lib\vs2010-x64
move lib\*.lib lib\vs2010-x64
move lib\*.dll lib\vs2010-x64
move lib\*.exp lib\vs2010-x64
move lib\*.ilk lib\vs2010-x64
move lib\*.pdb lib\vs2010-x64

Visual Studio/cl/link でリンクをするときには、このディレクトリを指定しないといけなくなることだけは注意。

プログラムのコンパイル・ビルド

qmake (頓挫中)

sample.cpp とかをつくって、そのディレクトリで、

set PATH=C:\Qt\2010.05\qt\bin;%PATH%
qmake -project
qmake -tp vc sample.pro -o sample.vcproj

なんてことをやっても、できる vcproj がなんかおかしい。よく分からない。
かといって、nmakeを使うぐらいなら、vs2010の意味が半減する。ということで今回はすんなりと諦めることにする。

仕方がないので手作業で(ただいま試行錯誤中)

まぁ、基本的に、ヘッダ、ライブラリ、プリプロセッサ関連の設定が主か。あとは、なぜか、/Zc:wchar_t- が指定されている(wchar_tがビルトインタイプじゃなく、unsigned shortと同じ扱いになる)ので、場合によっては、これに会わせる必要があるのかな?みたいな。

とりあえず、いろいろ問題があるようなので、もうちょっと試行錯誤してみる。