CentOS 7にwxHaskellをインストールしました。
インストールに際してインストールの仕方をGoogleで色々と検索したのですが、あまり参考になる記事がなかったので作成しました。
#wxHaskellとは
wxHaskellはHaskell用の移植性のあるネイティブのGUIライブラリです。このプロジェクトの目的は、Haskell用に産業用強度のGUIライブラリを提供することですが、自分で開発(および保守)するという負担はありません。
したがって、wxHaskellはwxWidgetsの上に構築されています。これは、すべての主要なGUIプラットフォーム間で移植可能な包括的なC++ライブラリです。GTK、Windows、X11、およびMacOS Xを含みます。さらに、ネイティブのルックアンドフィールを備えた幅広いウィジェットをサポートする成熟したライブラリ(1992年以来開発中)です。
wxHaskellの現在のバージョンはwxWidgets 2.9と3.0をサポートします。wxWidgets 3.0では、WindowsユーザはwxInstallパッケージを使ってwxHaskellと一緒にwxWidgetsを簡単にインストールすることができます。
※公式サイト自動翻訳より
#インストールしたPC環境
OS: CentOS 7 64bit
Cabal: 2.2.0.1
#公式サイト
https://wiki.haskell.org/WxHaskell
#インストール
まずソースをダウンロードしますが、ここではダウンロード用のフォルダを作成して実行しています。
mkdir tmp
cd tmp
mkdir wxHaskell
cd wxHaskell
ソースのダウンロード
cabal unpack wx wxcore wxdirect wxc
実行すると下記フォルダが作成されます。
[apo@localhost wxHaskell]$ ls -la
drwxrwxr-x. 3 apo apo 69 1月 28 08:36 wx-0.92.3.0
drwxrwxr-x. 3 apo apo 65 1月 28 08:36 wxc-0.92.3.0
drwxrwxr-x. 3 apo apo 68 1月 28 08:36 wxcore-0.92.3.0
drwxrwxr-x. 3 apo apo 70 1月 28 08:36 wxdirect-0.92.3.0
[apo@localhost wxHaskell]$
それぞれのフォルダに入り、cabal installを実行します。
公式サイトでは下記順序となっています。
- wxdirect
- wxc
- wxcore
- wx
wxdirectのインストール
cd wxdirect-0.92.3.0
cabal install
次はwxcをインストールするのですが、その前にwxGTK3をインストールします。
sudo yum --enablerepo=epel install wxGTK3-devel
PATHを設定します。
「~/.bash_profile」ファイルに下記パスを追加します。
PATH=/usr/libexec/wxGTK3:$PATH
追加したPATHを有効にします。
source ~/.bash_profile
wxcをインストールします。
cd ..
cd wxc-0.92.3.0
cabal install
wxcoreをインストールします。
cd ..
cd wxcore-0.92.3.0
cabal install
wxをインストールします。
cd ..
cd wx-0.92.3.0
cabal install
インストールは以上です。
#HelloWorld
wxHaskellを使ってHelloWorldしてみます。
サンプルが公式サイトのGitリポジトリーに含まれておりますので、リポジトリーをクローンします。
サンプルをダウンロードするフォルダを作成してダウンロードします。
上記で作成したtmpフォルダまで移動しておきます。
mkdir wxHaskell_sample
cd wxHaskell_sample
git clone https://github.com/wxHaskell/wxHaskell.git
wxHaskell_sampleフォルダの配下にwxHaskellフォルダが作成されます。
またその中のsamples/wxというフォルダにサンプルファイルが入っています。
cd wxHaskell
cd samples
cd wx
ls -la
[apo@localhost wx]$ ls -la
合計 152
drwxrwxr-x. 3 apo apo 4096 1月 28 10:16 .
drwxrwxr-x. 6 apo apo 57 1月 28 10:02 ..
-rw-rw-r--. 1 apo apo 2809 1月 28 10:02 BouncingBalls.hs
-rw-rw-r--. 1 apo apo 1515 1月 28 10:02 ByeDemo.hs
-rw-rw-r--. 1 apo apo 90 1月 28 10:02 ChangeLog.md
-rw-rw-r--. 1 apo apo 5198 1月 28 10:02 Controls.hs
-rw-rw-r--. 1 apo apo 2188 1月 28 10:02 CustomControl.hs
-rw-rw-r--. 1 apo apo 9342 1月 28 10:02 FileBrowse.hs
-rw-rw-r--. 1 apo apo 3504 1月 28 10:02 Grid.hs
-rw-rw-r--. 1 apo apo 1972 1月 28 10:06 HelloWorld.hi
-rw-rw-r--. 1 apo apo 1001 1月 28 10:02 HelloWorld.hs
-rw-rw-r--. 1 apo apo 16864 1月 28 10:06 HelloWorld.o
-rw-rw-r--. 1 apo apo 4728 1月 28 10:02 ImageViewer.hs
-rw-rw-r--. 1 apo apo 1485 1月 28 10:02 LICENSE.txt
-rw-rw-r--. 1 apo apo 1156 1月 28 10:02 Layout.hs
-rw-rw-r--. 1 apo apo 2905 1月 28 10:02 ListCtrl.hs
-rw-rw-r--. 1 apo apo 614 1月 28 10:02 ListView.hs
-rw-rw-r--. 1 apo apo 153 1月 28 10:02 Minimal.hs
-rw-rw-r--. 1 apo apo 1116 1月 28 10:02 Paint.hs
-rw-rw-r--. 1 apo apo 2148 1月 28 10:02 Print.hs
-rw-rw-r--. 1 apo apo 2164 1月 28 10:02 Process.hs
-rw-rw-r--. 1 apo apo 3025 1月 28 10:02 PropertyGrid.hs
-rw-rw-r--. 1 apo apo 1403 1月 28 10:02 TestTaskBarIcon.hs
-rw-rw-r--. 1 apo apo 5333 1月 28 10:02 TimeFlows.hs
-rw-rw-r--. 1 apo apo 9514 1月 28 10:02 TimeFlowsEx.hs
drwxrwxr-x. 2 apo apo 187 1月 28 10:02 bitmaps
-rw-rw-r--. 1 apo apo 563 1月 28 10:02 makefile
-rw-rw-r--. 1 apo apo 4857 1月 28 10:02 samplesWx.cabal
HelloWorld.hsをコンパイルして実行してみます。
ghc HelloWorld.hs
HelloWorldという実行ファイルができていますので、実行します。
./HelloWorld
以上です。