Edited at

CentOS7にwxHaskellをインストール

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を実行します。

公式サイトでは下記順序となっています。


  1. wxdirect

  2. wxc

  3. wxcore

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

下記画面が現れます。

pic1.png

以上です。