opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

buildappを使ってみた

LispGUI使って何か作ろうかと考えていたが、その前に流石にGUIだと実行可能ファイルとして実行できたほうが嬉しいのでCommon Lispで実行可能ファイルを生成する方法を調べた。

この辺の方法は処理系依存で大体どの処理系でもCore Imageをファイルに書き出す的な方法で実現することができるらしい?のだが、いつものCLikiさんによるとbuildappという補助ツールがあるようなので今回はこれを使ってみた。

buildappのインストール方法は省略する。

簡単なGUIを表示するコードを書く

まずは、buildappにかけるコードを書いてみる。LTKが簡単そうだったのでとりあえずこれを使ってみた。

;;; guitest.lisp
(use-package :ltk)
(defun hello-gui (args)
  (with-ltk ()
    (let ((b (make-instance 'button
                            :master nil
                            :text "ボタン"
                            :command (lambda ()
                                       (format t "Clicked!!~%")))))
      (pack b))))

ほとんどチュートリアルの写し。

buildappで実行可能ファイルを作る

ltkはquicklispで入れてるので、buildappのload-systemだけでは読み込めなかった。
ということで次のようにすればよいらしい。

$ sbcl --no-userinit --no-sysinit --non-interactive --load ~/quicklisp/setup.lisp --eval '(ql:quickload :ltk)' --eval '(ql:write-asdf-manifest-file "ql-manifest.txt")' 

$ buildapp --manifest-file ql-manifest.txt --load-system ltk --load guitest.lisp --output guihello --entry hello-gui

これでguihelloという実行可能ファイルができた。

f:id:opamp_sando:20150613223455p:plain

動かしてみたらこんな感じ。

参考資料

http://www.cliki.net/creating%20executables

http://stackoverflow.com/questions/18917067/how-to-use-buildapp-in-combination-with-quicklisp

http://www.peter-herth.de/ltk/ltkdoc/

http://www.xach.com/lisp/buildapp/

Firefox ブラウザ無料ダウンロード