Gtk2Hs macOS へのインストール

ホーム   目次


macOS へのインストール

macOS へのインストールは、macOS 9と10で成功しましたが、現在は macOS 10にしかインストールできません。ただし、インストールした macOS をアップデートして、macOS 14 まで、Gtk2Hsが動作することは確認できています。ここでは、macOS 10 へのインストール方法を紹介します。

macOS へのインストールは次の手順になります。

Java のインストール

Gtk+のインストール時に「Java Runtime が必要です」というダイヤログが出る場合があります。Java をまだインストールしていない場合は、念のために Java をインストールしておきます。

Java SE - Downloads | Oracle Technology Network | Oracle

Home brew のインストール

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のインストールコードは変更になる場合があります。下記オフィシャルサイトに表示されているイントールコードをコピーして使うほうが良いと思います。

macOS用パッケージマネージャー - Homebrew

Home brew のインストール後、問題がないか、次のように入力して確認します。

brew doctor

macOSのバージョンについての警告は無視してください。それ以外の警告には、表示される指示にしたがって、できるだけ対応してください。対応後は、ターミナルを一度閉じて、再び「brew doctor」を実行することを繰り返して、macOSのバージョンについての警告以外を消します。

XQuarts のインストール

Gtk フレームワークのために X ウィンドウシステムが必要です。ここでは「XQuarts」をインストールします。ターミナルに次のように入力してください。

brew cask install xquartz

XQuarts のインストール後は、macOSを再ログインする必要があります。

Haskell Platform のインストール

いろいろ試してみた結果、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.

Gtk+ のインストール

ターミナルに次のように入力してください。

brew install glib cairo gtk gettext fontconfig freetype

このインストールは4時間ほどかかります。

インストールが終わりましたら、次のようにしてパスを通します。

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:

コンピュータを再起動するか、再ログインしてください。そして次のように入力して Gtk+ のサンプルが起動するかどうか確認してください。

gtk-demo

Gtk2Hs のインストール

ターミナルに次のように入力してください。

cabal install alex happy
cabal install gtk2hs-buildtools
cabal install glib
cabal install gtk -f have-quartz-gtk

インストールが終わりましたら、念のためにターミナルを一度閉じて、もう一度開きます。

macOS での実行

上記で macOS 10.10 へのインストールは完了しました。次のソースコードを記述して、お好きなところに UTF-8 で保存してください。ここでは、「button.hs」という名前にしました。ファイルの拡張子は .hs になります。

button.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
    

ghci (インタープリタ) による実行

ターミナルで、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 (コンパイラ) による実行

ターミナルに「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」は表示されません。

macOS のアップデート

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 の時よりもマシですが、こちらも画面のデザインが表示されるだけで、終了ボタンは反応しませんし、タイトルバーも表示されないので移動させることも、クローズボタンで終了させることもできません。終了するには強制終了してください。


18180 visits
Posted: Dec. 24, 2018
Update: Dec. 27, 2018

ホーム   目次   ページトップ