wxWidgetsインストールメモ(Windows, MSVC)

wxWidgetsというクロスプラットフォームウィジェット・ツールキットを前に聞いてインストールすらしてなかったのでインストールのメモ。といってもまだ調べて切れてないのですが…。
公式はwxWidgetsここで、Downloadsから肝心なソースは引っ張ってこれます。自分でビルドします。はっきり言って面倒です。やり方によってはうまくビルドできないらしい。とりあえず引っ張ってきたソースやら何やらのディレクトリ開いてから始めます。ちなみにこの記事を書いている時の最新版はver2.9.1で、使用したのはMSVC10です。

  • Build/mswディレクトリへ移動します。
  • mswディレクトリには各MSVC用のslnとか色々あるのですが、MSVC9までのしかないのでそいつらを無視してms.dswから変換します。(slnから変換するとビルドエラーになったので)
  • DLLとかUniversalとか色々ありますが、今回はスタティックリンク版だけ作りたいのでDebug/Releaseをビルドします(デフォルトはUNICODE用でMD or MDdランタイムを使用)。warningがよく出ますが無視して平気なようです(多分)。lib/vc_libにビルドしたライブラリが入っています。
  • リンクを通します。インクルードディレクトリはinclude,ライブラリディレクトリは先ほどのlib/vc_libです。注意としてlib/vc_lib/mswuもインクルードディレクトリとして指定する必要があるようです。
  • 後は正常に動作するかチェック。面倒だったのでこちらのwxWidgetsを使ってウィンドウを表示するをそのまま利用。ライブラリ名ですがver2.8から変わってて違うので、一応記述しておきます。これでビルドが通って実行できたら完了。
#ifdef _DEBUG
// Debug mode
#	pragma comment( lib, "wxmsw29ud_core.lib" )
#	pragma comment( lib, "wxbase29ud.lib" )
#else
// Release mode
#	pragma comment( lib, "wxmsw29u_core.lib" )
#	pragma comment( lib, "wxbase29u.lib" )
#endif
#pragma comment( lib, "rpcrt4.lib" )
#pragma comment( lib, "comctl32.lib" )

// 以下はMSVC10ならばデフォルトでリンク指定されてたような気がする
#pragma comment( lib, "user32.lib" )
#pragma comment( lib, "ole32.lib" )
#pragma comment( lib, "gdi32.lib" )
#pragma comment( lib, "comdlg32.lib" )
#pragma comment( lib, "oleaut32.lib" )
#pragma comment( lib, "shell32.lib" )
#pragma comment( lib, "winspool.lib" )
#pragma comment( lib, "advapi32.lib" )

1/27(木)追記:コメントからのご指摘、comctl32.libはMSVC10でデフォルトリンク指定がされていないそうです。

上記のサイトでは色々とリンクしてましたが、最小構成で使用するのにこれらのライブラリをリンクする必要があるらしいです。wxWidgetsのライブラリは22個あるので適宜リンクするか、面倒な人は全部リンク。ドキュメントが豊富だと絶賛されているので、おそらくどこかにリンクが必要なライブラリ一覧とかあるんじゃないかと思います。今度ドキュメント調べます。
後includeとlib以外要らないんじゃないかと思って私はこの2つだけコピーして後は削除してます。いや、サンプルやテストは残してますが。後、interfaceなるヘッダの山があるのですが、これはライブラリ内部で使ってるだけのもの…なのかな?