Revision as of 19:55, 5 August 2008
Using wxHaskell on MacOS X platforms
Even though graphical applications on MacOS X look great, it is a still a developers nightmare to get them working :-). Furthermore, the MacOS X port of wxWidgets is the least mature and still has some quirks. This page describes how to circumvent some of the pitfalls.
- The installation of wxWidgets provided with OSX Tiger will not work, as it does not have the wxThread symbols that wxHaskell does want to link against.
Graphical applications generated with GHC do not work if executed directly ‚Äì they need to be upgraded into MacOS X applications. The macosx-app script does this for you. It is provided with binary releases and resides in the bin directory of a source release. Creating a program now consists of the following steps:
> cd samples/wx > ghc -package wx -o helloworld HelloWorld.hs > /usr/local/wxhaskell/bin/macosx-app -v helloworld > open helloworld
Due to complicated MacOS X restrictions, graphical wxHaskell applications do not work directly when used from GHCi. Fortunately, Wolfgang Thaller has kindly provided an ingenious Haskell module that solves this problem. Just import the (compiled) module EnableGUI in your program and issue the following command to run main from your GHCi prompt:
> enableGUI >> main
The dynamic link libraries used by wxHaskell can not always be found. If your application seems to start (the icon bounces) but terminates mysteriously, you need to set the dynamic link library search path to the wxHaskell library directory. For example:
> setenv DYLD_LIBRARY_PATH /usr/local/wxhaskell/lib