Visual Studo.NET 2003でQt開発環境を構築してみた

Qtを少しいじくり始めたのですが、Cygwin環境ではmakeに失敗したりします。エラーメッセージで表示されるファイルパス名などでセパレータ文字の'\'がエスケープされて消えているところをみるとqmakeかMinGWがMS-DOS環境に設定されているためと思われます。DOS窓で作業するのは嫌なので、VS.NETの作業環境構築を試みました。
Qt Open Source Edition は、Visual C++用のconfigureができず、MinGW専用です。そこでVisual Studio.NETはコードエディタとmake実行の環境として使用することにします。以下のような手順で通常のMFC開発とそんなに違わない環境が構築できました。

1.パスの設定
 環境変数PATHと同様の設定を行う。「ツール」→「オプション」ダイアログで「プロジェクト」→「VC++ディレクトリ」のリストにMinGWとQtのbinディレクトリのパスを追加する。

2.プロジェクトの作成
 Visual Studio.NETのC++用のプロジェクト作成ウィザードで「メイクファイルプロジェクト」にて空のプロジェクトを作成する。

3.プロジェクトへのファイル追加
 2で作成したプロジェクトのフォルダにソースファイル(*.h, *.cpp)をコピーする。VS.Net側で「既存項目の追加」ダイアログにてソースファイルをプロジェクトに追加する。

4.MinGW用 Makefileの生成
 プロジェクトフォルダ内で、qmake -project, qmake を実行し、Makefileを生成する。

5.プロジェクトプロパティの設定
 プロジェクトのプロパティダイアログで「構成プロパティ」→「NMake」でコマンドラインの設定を行う。

  「ビルドコマンドライン」    : mingw32-make
  「すべてリビルドコマンドライン」: mingw32-make -B
  「消去コマンドライン」     : mingw32-make clean
  「出力」            : debug\xxx.exe ← makeで生成される実行モジュール

このようにすると、ソースコード編集、ビルド、リビルド、実行などが通常のVC++プロジェクトと同様に行えます。メソッド追加はVisual C++のダイアログが使えるためメンテナンスが楽になります。ただしクラスの追加ダイアログはInternet Explorerスクリプトエラーなるものが発生して失敗します。クラスを追加するときは手動でhファイルとcppファイルを作成してプロジェクトに取り込む必要があります。

ところで、問題がひとつ。g++のエラー出力がVC++のものと異なるため、エラー行へのジャンプができません。そこで、エラーメッセージの書式を次のように変換するフィルタコマンドを書きました。

  foo.cpp:14: error ... ==> foo.cpp(14) : error ...

boost::regexを使うと数行でフィルタが書けます。このコマンドのファイル(gcocnv.exe)をパスが通ったディレクトリにコピーし、「ビルドコマンドライン」で

  mingw32-make 2>&1 | gcocnv

のようにパイプ渡しで指定すると、g++の標準エラー出力が標準出力にリダイレクトされて書式が変換された結果がVS.NETのアウトプットウィンドウに出力されるようになります。これでエラー行へのジャンプも可能になりました。リビルドを実行するとqmakeの実行(makefileの生成)からやってくれるのでDOS窓を起動する必要がなくなります。

これで、Qtで快適プログラミングできるようになったかな?