我想在OS X(Snow Leopard,MacBook Pro)上使用wxHaskell。我能够成功安装该库以及以下脚本:

module Main where
import Graphics.UI.WX

main :: IO ()
main = start hello

hello :: IO ()
hello
  = do f    <- frame    [text := "Hello!"]
       quit <- button f [text := "Quit", on command := close f]
       set f [layout := widget quit]


确实会导致窗口显示为带有指定的单个按钮。但是,当我单击按钮时什么也没发生-我什至没有看到按钮变成蓝色的视觉响应,以表明它被按下了(哈哈,没有双关语)。

我听说您必须在wxHaskell二进制文件上运行一个名为“ macosx-app”的软件包才能运行它们,但是我在任何地方都找不到。它不在我的机器上,也不在WX或wxHaskell发行版中。

有人知道我需要做些什么才能使它起作用吗?

最佳答案

source releasemacosx-app-template目录中包含一个名为bin的文件。 configure脚本的以下部分使用此文件来创建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


如果您已经安装了wxHaskell并且未使用configure脚本,则大概可以重复这些步骤-即,将macosx-app-template复制到macosx-app,使其可执行,并在顶部添加以下几行:

#!/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"


请注意,您需要更改libdir=""以指定wxHaskell库文件的安装目录,如果wx-config不在您的路径中,则也需要更改该行。

关于macos - OS X上的wxHaskell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3029385/

10-10 19:23