wxHaskell をインストールする

「Real World Haskell」は Gtk2hs を紹介していますが wxHaskell は移植性が高く、ネイティブAPIを呼んでいますから綺麗で、パーツも豊富そうです。
wxWidgets については「wxWidgets でクロスプラットフォーム GUIアプリを作ろう」に詳しく記述されています。

Ruby は "gem install wxRuby" 一発でインストールが可能で、
C:\ruby-1.8\lib\ruby\gems\1.8\gems\wxruby-2.0.1-x86-mswin32-60\samples に豊富なサンプルもあります。

しかし、Windows でのwxHaskell はとても大変です。
WxHaskell/Download のバイナリは ghc 6.10.4 までしかありませんし、ghc 6.10.4はエラーが出ますので、そのままで動くのは ghc 6.10.3 までです。

  • まずは wxWidgetsコンパイルするため「MinGW + MSYSのインストール方法」を参考にして MinGW + MSYS の環境を構築しました。(ghc 6.12.X は MinGW が梱包されているようです。
  • MSYS インストールの途中で黒い画面になる部分ではエラーが発生しましたが、気にしなくても大丈夫のようです。
  • wx-config が必要なので、ダウンロードしてパスの通ったディレクトリに入れます。私は MSYS の bin に入れました。
  • 作業は スタート→MinGW→MSYS→MSYS のコンソールを起動し、コンソールの中で行います。
$ wx-config --help

 wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full]
                (略)
  • Browse wxWidgets Files on SourceForge.net : こちらから、wxMSW-2.8.11.zip をダウンロードします。wxMSW-2.8.11-Setup.exe もありますが自己解凍して希望の場所に設置するだけですので wxMSW-2.8.11.zip を C:\msys\1.0\home\username に解凍しました。
  • コンパイル
> cd wxMSW-2.8.11/build/msw
> mingw32-make -f makefile.gcc BUILD=release MONOLITHIC=1 SHARED=1 UNICODE=1

(http://haskell.org/haskellwiki/WxHaskell/Install)

WXWIN・・・C:\msys\1.0\home\username\wxMSW-2.8.11
WXCFG・・・gcc_dll\mswu
  • エラー
cabal install wx
  (snip)
Linking C:\DOCUME~1\LOCALS~1\Temp\wxcore-0.12.1.63756\wxcore-0.12.1.6\dist\setup\setup.exe
...
'wxdirect' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
  • wxdirect のコンパイルに成功しているのに、内部コマンドまたは外部コマンドとして認識されません。C:\Users\userName\AppData\Roaming\cabal\bin を Path に追加します。
  • 最後に書き込みに失敗・・・管理者権限で MSYS コンソールを起動してOK。(管理者権限で MSYS コンソールを起動し、その中で cabal install wx を実行するとエラーは発生しませんでした。別マシンにインストール時)
$ cabal install wx
Resolving dependencies...
[1 of 1] Compiling Main             ( C:\Users\igata\AppData\Local\Temp\wxcore-
0.12.1.63744\wxcore-0.12.1.6\Setup.hs, C:\Users\igata\AppData\Local\Temp\wxcore-
0.12.1.63744\wxcore-0.12.1.6\dist\setup\Main.o )
(snip)
[16 of 16] Compiling Graphics.UI.WX   ( src\Graphics\UI\WX.hs, dist\build
\Graphics\UI\WX.o )
Registering wx-0.12.1.6...
Installing library in
C:\Users\igata\AppData\Roaming\cabal\wx-0.12.1.6\ghc-6.12.3
Registering wx-0.12.1.6...
cd C:\ghc\wxhaskell\samples\wx
ghc  -optl-mwindows -package wx Grid.hs -o grid
./grid