wxHaskell on OS X
I want to use wxHaskell on OS X (Snow Leopard, MacBook Pro). I was able to install the library successfully and the script below:
module Main where
import Graphics.UI.WX
main :: IO ()
main = start hello
hello :: IO ()
hello
= do f <- frame [text := "H开发者_StackOverflowello!"]
quit <- button f [text := "Quit", on command := close f]
set f [layout := widget quit]
does result in a window being displayed with a single button, as specified. However, nothing happens when I click the button - I don't even get the visual response of the button turning blue to indicate that it's been depressed (haha, no pun intended).
I've heard that you have to run a package called "macosx-app" on wxHaskell binaries to get them to run, but I can't find this anywhere. It's not on my machine or (as far as I can tell) in the WX or wxHaskell distros.
Anyone know what I need to do to get this to work?
The source release includes a file named macosx-app-template
in the bin
directory. This file is used by the following part of the configure
script to create macosx-app
:
cat > config/macosx-app-temp << EOF
#!/bin/sh
rezcomp="$wxinstallrezcomp"
rezfile="$wxinstallrezfile"
EOF
cat config/macosx-app-temp bin/macosx-app-template > config/macosx-app
rm -f config/macosx-app-temp
chmod a+x config/macosx-app
If you already have wxHaskell installed and aren't using the configure
script, you could presumably just duplicate these steps—i.e., copy macosx-app-template
to macosx-app
, make it executable, and add the following lines at the top:
#!/bin/sh
libdir=""
wxrezcomp="`wx-config --rezflags`"
wxrezfile=""
if test "$wxrezcomp"; then
for word in $wxrezcomp; do
temp="`echo $word | grep '[^_]*_mac-[^r]*r'`"
if test "$temp"; then
wxrezfile="$temp"
fi
done
fi
if test "$wxrezfile"; then
wxrezdir="`echo $wxrezfile | sed -e 's|\(.*\)/libwx_mac.*|\1|'`"
wxinstallrezcomp="`echo \"${wxrezcomp}\" | sed -e \"s|${wxrezdir}|${libdir}|g\"`"
wxinstallrezfile="`echo \"${wxrezfile}\" | sed -e \"s|${wxrezdir}|${libdir}|g\"`"
fi
rezcomp="$wxinstallrezcomp"
rezfile="$wxinstallrezfile"
Note that you need to change libdir=""
to specify the directory where the wxHaskell library files are installed, and if wx-config
isn't in your path you'll need to change that line as well.
I installed wxhaskell using cabal, and reading the other explanations I proceed as follows in order to have the macosx-app working:
I download the wxhaskell sources from http://haskell.org/haskellwiki/WxHaskell/Download
I unzip the downloaded file:
wxhaskell-src-XXX.zip
where XXX is the version number.
I run configure in the unzipped directory. This creates from the template the file config/macosx-app
.configure
I copy using sudo the file to the bin directory /usr/local/bin
sudo cp config/macosx-app /usr/local/bin
I delete the directories with the source files
That works for me!
精彩评论