macOS へのインストールは、macOS 9と10で成功しましたが、現在は macOS 10にしかインストールできません。ただし、インストールした macOS をアップデートして、macOS 14 まで、Gtk2Hsが動作することは確認できています。ここでは、macOS 10 へのインストール方法を紹介します。
macOS へのインストールは次の手順になります。
Gtk+のインストール時に「Java Runtime が必要です」というダイヤログが出る場合があります。Java をまだインストールしていない場合は、念のために Java をインストールしておきます。
Java SE - Downloads | Oracle Technology Network | Oracle
Home brew をインストールします。Home brew は、XQuartz や Gtk+ をインストールするためにもを使いますが、まず何よりも、Apple Command Line Tools をインストールするためにも、Home brew を早い段階でインストールします。Home brewは、インストールする時に、Command Line Toolsも自動的にインストールします。
Command Line Toolsをほかの方法で、インストールした場合は、Home brew での Gtk+ のインストールに失敗します。以前はそんなことはなかったのに、なぜだろう?
Home brew のインストールは、ターミナルを起動して次のように入力します。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
なお、Home brewのインストールコードは変更になる場合があります。下記オフィシャルサイトに表示されているイントールコードをコピーして使うほうが良いと思います。
Home brew のインストール後、問題がないか、次のように入力して確認します。
brew doctor
macOSのバージョンについての警告は無視してください。それ以外の警告には、表示される指示にしたがって、できるだけ対応してください。対応後は、ターミナルを一度閉じて、再び「brew doctor」を実行することを繰り返して、macOSのバージョンについての警告以外を消します。
Gtk フレームワークのために X ウィンドウシステムが必要です。ここでは「XQuarts」をインストールします。ターミナルに次のように入力してください。
brew cask install xquartz
XQuarts のインストール後は、macOSを再ログインする必要があります。
いろいろ試してみた結果、Haskell Platform 8.4.3 Full が良いみたいです。下記サイトより 8.4.3 をダウンロードしてインストールしてください。
Haskell Platform - Included Packages
インストールが終了したら、一部ファイルを書き換えます。ターミナルに次のように入力してください。
cd /Library/Frameworks/GHC.framework/Versions/Current/usr/lib
sudo su
...パスワード入力...
chmod o+w ghc-8.4.3
cd ghc-8.4.3
chmod o+w settings
exit
次にお使いのテキストエディタで「/Library/Frameworks/GHC.framework/Versions/Current/usr/lib/ghc-8.4.3/settings」ファイルを開いて、次の行のYESをNOに書き換えて保存してください。
, ("C compiler supports -no-pie","YES")
を
, ("C compiler supports -no-pie","NO")
に書き換える。
Haskellが無事にインストールされたかどうか、Haskellのインタープリタを起動して確認してみます。ターミナルに次のように ghci と入力してください。
ghci
GHCi, version 8.4.3: https://www.haskell.org/ghc/ :? for help
Prelude>
上記のように表示されたら、Haskell Platformは無事にインストールされています。
ghci (Haskellのインタープリタ) を終了するには :q と入力します。ghciのコマンドは : (コロン)で始まります。
Prelude> :q
Leaving GHCI.
ターミナルに次のように入力してください。
brew install glib cairo gtk gettext fontconfig freetype
このインストールは4時間ほどかかります。
インストールが終わりましたら、次のようにしてパスを通します。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:
コンピュータを再起動するか、再ログインしてください。そして次のように入力して Gtk+ のサンプルが起動するかどうか確認してください。
gtk-demo
ターミナルに次のように入力してください。
cabal install alex happy
cabal install gtk2hs-buildtools
cabal install glib
cabal install gtk -f have-quartz-gtk
インストールが終わりましたら、念のためにターミナルを一度閉じて、もう一度開きます。
上記で macOS 10.10 へのインストールは完了しました。次のソースコードを記述して、お好きなところに UTF-8 で保存してください。ここでは、「button.hs」という名前にしました。ファイルの拡張子は .hs になります。
import Graphics.UI.Gtk
main :: IO()
main = do
initGUI
window <- windowNew
set window [windowTitle := "ボタン"]
windowSetDefaultSize window 230 150
containerSetBorderWidth window 15
windowSetPosition window WinPosCenter
align <- alignmentNew 1 1 0 0
containerAdd window align
button <- buttonNewWithLabel "終了"
widgetSetSizeRequest button 100 30
containerAdd align button
on button buttonActivated $ do
mainQuit
widgetHide window
on window objectDestroy mainQuit
widgetShowAll window
mainGUI
ターミナルで、button.hs を保存したディレクトリに移動してださい。そして「ghci button.hs」と入力してください。
ghci button.hs
GHCi, version 8.4.3: https://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( button.hs, interpreted )
Ok, modules loaded: Main.
*Main>
上記のように「Ok, modules loaded: Main.」と表示されれば読み込みに成功しています。
もし「Failed, modules loaded: none.」と表示された場合は、コードに間違いがあるか、ファイルタイプがUTF-8になっていないかなどの問題があります。読み込みが成功した場合はコマンドプロントに「main」と入力して実行します。
main
残念ながら macOS 10.10 の ghci では、次のように真っ白なウィンドウが表示されるだけです。クローズボタンも表示されないので、「強制終了」してださい。
ターミナルに「ghc button.hs」と入力してコンパイルします。
ghc button.hs
[1 of 1] Compiling Main ( button.hs, button.o )
Linking button.exe ...
上記のように表示されればコンパイルは成功しています。
button.hs:9:31: error:
lexical error in string/character literal (UTF-8 decoding error)
上記のように表示されればどこかが間違っています。修正して、再度コンパイルします。
無事にコンパイルできた場合は、ターミナルに次のように入力して実行します。
./button
コンバイルされた「button」ファイルをダブルクリックしても起動できますが、ターミナルも開いてしまいます。これを修正するには、まず新規フォルダを作成して、そのフォルダの中に「button」ファイルを入れます。そしてフォルダの名前を「button.app」に変更します。これでダブルクリックで起動できる。普通のアプリケーションになります。当然ターミナルも開きません。なお、アプリケーションファイルの「.app」は表示されません。
gtk2hsをインストールした macOS 10.10 を 10.11 〜 10.14 へアップデートした場合は、次のようにして「Command Line Tools」もアップデートします。
xcode-select --install
アップデートした macOS 12から14 では、ghc で、gtk2hs ファイルをコンパイルすることはできますが、ghci で起動することはできません。
macOS 11 では、ghciで起動した場合、次のようなウィンドウになります。macOS 10.10 の時よりもマシですが、こちらも画面のデザインが表示されるだけで、終了ボタンは反応しませんし、タイトルバーも表示されないので移動させることも、クローズボタンで終了させることもできません。終了するには強制終了してください。