読者です 読者をやめる 読者になる 読者になる

windowsでsbcl+lispbuilderのセットアップ

CommonLisp Emacs

chatonのCL部屋で困ってる人がいたみたいなので。
ここsbclwindows forkを使えば最速(全プラットフォーム中)でサンプルの動作まで持っていけるはず。
配布のこととかも考えたらライブラリの配置、ロード方法をしっかり理解しといた方が良いとは思うけどとりあえず動かすまでを最優先で。

1. sbcl windows forkのダウンロード

ここからStand-alone executableってのをダウンロード。

zipファイルを展開して出てくるsbcl-with-contrib-win32-うんたらかんたら.exeをパスの通ってる場所に置き、名前が長いのでsbcl.exeにリネームしておく。

2. sdl.dllのダウンロード

公式サイトからwindows用バイナリ(dll)をダウンロード

zipファイルを展開して出てくるsdl.dllをパスの通ってる場所に置く。

※ 今回スクリーンショットを撮るにあたって、新規環境でのセットアップをシミュレートするためwindowsにGuestログインし、C:\Users\Guest\bin というフォルダを作ってここにパスを通してsbcl.exeとsdl.dllを置いている。

3. sbcl起動 & lispbuilder-sdlインストール

コマンドプロンプトからsbclを起動し、おもむろに ":ql lispbuilder-sdl-examples" とタイプしてリターン

するとまずquicklispのインストールが始まります。
このsbclwindows forkにはquicklisp用のREPLコマンドが組み込んであってとっても便利。
ちなみにquicklispはexeに埋め込まれてるわけではなく、qlコマンドの初回使用時に最新版を取得してインストールするようになってるっぽいです。
quicklispのインストールが完了すると絶え間なくlispbuilder-sdl-examplesのロードが始まり、依存するライブラリがインストール&ロードされて行きます。

4. サンプルの起動

ロードが完了したらlispbuilder-sdl-examplesパッケージに移動してサンプルの関数を確認。

適当に実行してみる。

できたできた。

SLIMEのセットアップ

折角なのでEmacsとSlimeのセットアップもしてみよう。

1. quicklisp-slime-helperのインストール

SLIMEのインストールもquicklispでやっちゃえば簡単。
:ql quicklisp-slime-helper と打ち込んでインストール。


インストール完了後、.emacsの設定方法が表示されるのでコピペしておく。

(load (expand-file-name "~/AppData/Local/common-lisp/quicklisp/slime-helper.el"))
;; Replace "sbcl" with the path to your implementation
(setq inferior-lisp-program "sbcl")

Win7なら↑これ。XPだとslime-helper.elのパスが変わるはず。

2. .sbclrcの設定

quicklispは:qlコマンドを使うまでロードされないので、REPLコマンドが使えないSLIMEからquicklispを使うにはsbclの初期化ファイル .sbclrc でロードするよう設定が必要。
コマンドプロンプトで起動してるsbclのREPLから (ql:add-to-init-file) を実行すれば .sbclrc に必要な設定が書き込まれます。

3. Emacsのインストール

適当にググって適当な場所にインストールして下さい。 (ここIMEパッチ適用済のバイナリがオススメ?)
環境変数HOMEの設定(.emacsの置き場所)を忘れずに。

4. .emacsにSLIMEの設定を書き込む

1. の最後に表示されてる設定を ~/.emacs に書き込んで保存

5. SLIME起動

emacs起動しなおして M-x slime 実行

起動できなかったら.emacsが正しく読み込めてない(環境変数の設定か.emacsの置き場所がおかしい)か、.emacsに書き込んだ内容がおかしいか。

6. lispbuilder-sdlをquickload

(ql:quickload 'lispbuilder-sdl-examples) を実行

無事ロードできたらサンプルを実行してみる。 パッケージ名、関数名補間してくれるから探すの簡単。


できたできた。