HaskellでGLFWを使うための備忘録 - 環境構築編

HaskellでGLFW使って何かゲーム作りたいなという野望をそろそろ実現しようと思っていながら、今まで手をつけていなかったのでそろそろ重い腰を上げてやっていこうと思います。

本記事は備忘録なので第三者にとって曖昧であったり不可解である部分が出てくるかもしれません。

何か間違っているところがありましたら何なりとコメントでお申し付けください。

GLFWを使うにあたっての必須パッケージ(ubuntu/debian)

  • libglfw3-dev
  • libxinerama-dev
  • libxi-dev
  • libxcursor-dev

$ sudo apt install libglfw3-dev libxinerama-dev libxi-dev libxcursor-dev

stackのインストール

Haskellのビルドツールです。

ビルトインライブラリ以外のものを使うとき、stackを使うと管理が楽なのでこちらを使っていきます。

詳しくはtanakhさんがQiitaにあげている記事を参照してください。

Haskellのビルドツール"stack"の紹介

インストールは以下のコマンドで行います。

$ wget -qO- https://get.haskellstack.org/ | sh

プロジェクトディレクトリの生成

$ stack new glfw-experiment

以下のようなディレクトリとファイルができると思います。

glfw-experiment/
├── ChangeLog.md
├── LICENSE
├── README.md
├── Setup.hs
├── app
│   └── Main.hs
├── glfw-experiment.cabal
├── package.yaml
├── src
│   └── Lib.hs
├── stack.yaml
└── test
    └── Spec.hs

3 directories, 10 files

package.yamlの編集

今回はGLFW-bという外部ライブラリを使用するのでそちらを使うために設定ファイルに変更を加えます。

executablesのdependenciesにGLFW-bを追加します。

executables:
  glfw-experiment-exe:
    main:                Main.hs
    source-dirs:         app
    ghc-options:
    - -threaded
    - -rtsopts
    - -with-rtsopts=-N
    dependencies:
    - glfw-experiment
    - GLFW-b

ビルドしてみる

ビルドできるか確認してみます。

$ stack build
$ stack exec glfw-experiment-exe
someFunc

someFuncと出力されればビルドは成功です。

これにてGLFWを使う準備は整いました。