wxWidgetsライブラリのビルド
wxWidgetsを入手したら、さっそくzipファイルを解凍しファイルを展開します。展開後、最初に読むべきファイルは「INSTALL-MSW.txt」です。この内容にしたがってライブラリをビルドしていきます。内容を十分に把握できていないとビルド作業を何度も行うことになりえますので、よく確認しておきましょう。ビルドを始める前には以下の作業を行います。
最初に行うこと:「setup.h」の編集
初期設定では、OpenGL関係とODBC関係が使えない状態になっています。この状態だと一部のサンプルが利用できませんので、事前に有効にしておきます。
「include/wx/msw」フォルダの中にある「setup.h」を開いてください。「setup0.h」など似た名前のファイルがありますがそちらは無視してかまいません。
「setup.h」の中で、次の1行(976行目)の最後の「0」を「1」に変更します。
#define wxUSE_GLCANVAS 0
#define wxUSE_GLCANVAS 1
同様に、次の1行(1081行目)も最後の「0」を「1」に変更します。
#define wxUSE_ODBC 0
#define wxUSE_ODBC 1
プロジェクトファイルの変換
「setup.h」周辺の修正が終わったら、次はVC++2005での作業に入ります。
「build/msw」フォルダの中にある「wx.dsw」をエクスプローラからダブルクリックするなどして開きます。このファイルは、本来Visual C++ 6用のファイルであるため、VC++2005用に変換する作業が入ります。その変換ダイアログでは[すべてはい]を選択してください。なお、変換後は「wx.sln」のダブルクリックで起動できます。
ソリューション構成の選択
ライブラリは少なくとも2種類のものを作ることになるでしょう。Unicode ReleaseとUnicode Debugです。順序はどちらでも構いませんが、(1)ソリューション構成の選択、(2)ソリューションのビルド、を少なくとも2回繰り返すことになります。
まずは、ソリューション構成の選択します。
次に、ソリューションのビルドを行います。
UnicodeなしのDebugやReleaseも、うまく動作しないときの待避用にビルドしておくとよいかもしれません。また、DLLやUniversalのついたものは必要に応じてビルドすればよいでしょう。ただし、DLLの場合は注意が必要と思われます。
なお、英語の解説でバッチビルドを使うように指示しているものがありますが、全部を選択すると4倍もしくは8倍もの無駄な時間が掛かり、他方、個別に選択しようとすると誤りやすいのでお勧めできません。
ライブラリビルドの際に無視してよい警告
本当はこういった警告は一つも出てきて欲しくないものですが、ライブラリビルドの際には無視してかまわないものがいくつかあります。確認のため、次の表にまとめておきます。
警告コード | 警告内容 | 解説 |
warning C4996 | 'sprintf' が古い形式として宣言されました。 | sprintf_sの方が安全だからとの趣旨で警告がなされます。一般化されていないということでwxWidgets側では歓迎されていないようです。warning C4996はほかにも多種多数出てきます。 |
warning C4819 | ファイルは、現在のコードページ(932)で表示できない文字を含んでいます。 | ヘッダファイルの中にANSI文字以外の著者名が書かれているため表示されるようです。 |
warning LNK4221 | パブリック シンボルが見つかりませんでした。 | 「dummy.obj」ファイルに対して警告されます。もともと外部公開シンボルが定義されていないようです。 |
warning C4535 | set_se_translator() の呼び出しは /EHa が必要です。 | IDEのヘルプ検索からC4535を検索すると、例外処理に関するものであることが分かります。将来的には修正されるかもしれません。例外処理なので正常動作しているうちは問題がないと思われます。 |
ソリューション構成とフォルダの対応
ビルドされたライブラリや中間ファイルは、wxWidgets内の「lib/vc_lib/mswud/」フォルダに置かれます。mswud
の部分はソリューション構成ごとに変化し、次のようになっています。フォルダ名を指定したり、UniversalやDLLを指定した場合などについては「INSTALL-MSW.txt」を参照してください。
ソリューション構成 | フォルダ名(一部) |
Release | msw |
Debug | mswd |
Unicode Release | mswu |
Unicode Debug | mswud |
サンプルやデモのビルド
ライブラリが無事にビルドできれば、後は「samples」の各フォルダで同じ作業を行うだけです。つまり「~.dsw」ファイルの変換作業を行い、ソリューション構成を選択してビルドします。もちろんソリューション構成はライブラリを構築済みのものから選択しないといけません。
一部のサンプルや「demos」フォルダ内には「~.dsw」ファイルがありませんが、代わりに「~.dsp」ファイルを利用できます。ビルド時に「~.sln」ファイルの保存を求められることがありますが、そのまま保存して構いません。
また、「samples.dsw」を使うと大部分のサンプルを一挙にビルドできます。
サンプルの中にはMacintoshでしか動作しないものや、テスト用としてソースファイル内でマクロをその都度定義することを前提としたものがありますが、ここまでの作業で、ほとんどのサンプル・デモを試すことができます。
まとめ
どちらかと言うと泥臭い作業であり、この作業自体が基礎知識に入ってしまいそうな導入手順の紹介でしたが、実はこれだけのことを解説するためにずいぶんと試行錯誤をしました。その中で学んだことは、古い情報を元にするとかえって手間がかかることもあるので、実際にwxWidgetsを使っていく際には、慎重かつ貪欲に情報を集める姿勢が必であるということです。
サンプルを一通り試したら次はどうすべきか? これには緒論あると思いますが、「samples/internat」の研究は、いずれ欠かせないものとなるでしょう。出来上がったアプリケーションが「クロスプラットフォームだけど対応言語は英語だけ」となってしまっては、なんとも寂しいものですから。
この多言語化も簡単なようでやはり泥臭い、色々な留意点があります。機会をいただけましたらその記事も書いてみたいと思います。
正直なところを白状しますと私自身、「samples」や「demos」の日本語化にチャレンジしたのみで、まだ自作のwxWidgetsアプリケーションを作ったことはありません。順番から行けばそちらのほうが先ですね。
参考資料
本記事に関しては、wxWidgets付属の文書やwww.wxwidgets.orgのフォーラムなどが情報源です。