Help us understand the problem. What is going on with this article?

Embeddable Common LispとQt5でGUIアプリケーション〜開発環境構築〜

More than 3 years have passed since last update.

はじめに

ECL(Embeddable Common Lisp)のQtバインディングであるEQL5(Embedded Qt Lisp)を導入してみたいと思います。

※ OSはUbuntu 17.10を使用しています。
※ 事前にECLをインストールしておいてください。

ECLは以下の記事を参考にインストールしてください。
* Embeddable Common Lisp導入メモ

Qt導入

QtのインストールにはQtの公式サイトでアカウント登録する必要があります。

QtダウンロードページからQtをダウンロードします。
バージョンは5.8以上なら良いと思います。
自分は5.9.1をダウンロードしました。

wget https://download.qt.io/archive/qt/5.9/5.9.1/qt-opensource-linux-x64-5.9.1.run

以下のコマンドで実行権限を与えます。

chmod u+x qt-opensource-linux-x64-5.9.1.run

インストーラを実行します。

./qt-opensource-linux-x64-5.9.1.run

後は画面に従ってインストールしてください。
途中、ユーザ名とパスワードを入力する箇所がありますが、そこではQtアカウント登録したときのものを入れてください。

自分の環境では上記だけではうまく行かなかったので、以下も実行しました。

sudo apt install qt-sdk
sudo apt install qttools5-dev qttools5-dev-tools

EQL5導入

EQL5のソースコード一式をダウンロード

git clone https://gitlab.com/eql/EQL5.git

ダウンロードしたEQL5の「src」ディレクトリに移動します。

cd ダウンロードしたディレクトリ/EQL5/src

以下のコマンドを実行します。

ecl -shell make

Makefile作成

qmake eql5.pro

コンパイル

make

ここで以下のようなエラーが出ますが、無視してもインストールはできました。
ここは後々調べていく予定です。

Project ERROR: Unknown module(s) in QT: multimedia multimediawidgets
Makefile:69: ターゲット 'sub-module_multimedia-pro-make_first' のレシピで失敗しました
make: *** [sub-module_multimedia-pro-make_first] エラー 3

インストール

sudo make install

コンパイル同様ここでも以下のエラーが出ますが、インストール自体は成功しました。

Project ERROR: Unknown module(s) in QT: multimedia multimediawidgets
Makefile:77: ターゲット 'sub-module_multimedia-pro-install_subtargets' のレシピで失敗しました
make: *** [sub-module_multimedia-pro-install_subtargets] エラー 3

無事インストールが成功していれば、以下のコマンドでバージョンが確認できます。

eql5 -v

Screenshot from 2018-01-13 10-29-04.png

サンプルプログラム実行

今回は「Sokoban」というサンプルプログラムを実行します。
以下のコマンドでサンプルプログラムのある場所に入ります。
(サンプルプログラムは/EQL5/examples/ディレクトリ下にあります。)

cd EQL5をダウンロードしたディレクトリ/EQL5/examples/7-Sokoban

以下のコマンドで実行します。

eql5 eql-sokoban.lisp

以下、実行画面です。

Screenshot from 2018-01-13 00-28-02.png

空ウィンドウプログラム

空ウィンドウプログラムも一応記載しておきます。

test.lispという名前で以下のプログラムを作成

test.lisp
(in-package :eql-user)

(let ((window (qnew "QWidget"
                    "size" '(320 240)
                    "windowTitle" "Top-level widget")))
  (|show| window))

以下のコマンドで実行

eql5 test.lisp

以下、実行中の様子。

Screenshot from 2018-01-13 13-54-15.png

最後に

Qtの導入が思った以上に難しかった・・・。
いや、単に初めて触ったから苦労しただけだったのか・・・?
とにかく、EQL5をインストールできてよかったです。

今回はデスクトップアプリケーションでしたが、EQL5にはAndroid開発もできるEQL5-Androidというものもあります。
今度はそっちを導入してみたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away