Quicklisp がインストールされている場合は、組み込み機能の Quickproject を使用できます。
(ql:quickload "quickproject")
(quickproject:make-project "~/src/lisp/swatchblade/"
:depends-on '(vecto hunchentoot))
これにより、次の 4 つのファイルが作成されます。
- package.lisp
- swatchblade.lisp
- swatchblade.asd
- README.txt
package.lisp はパッケージの名前空間を定義します:
(defpackage #:swatchblade
(:use #:cl)
(:shadowing-import-from #:vecto
#:with-canvas
#:rounded-rectangle
#:set-rgb-fill
#:save-png-stream))
swatchblade.asd は、システム/プロジェクト、ソース コード ファイル、依存関係などを定義します。
(asdf:defsystem #:swatchblade
:serial t
:depends-on (#:vecto
#:hunchentoot
#:cl-colors)
:components ((:file "package")
(:file "swatchblade")))
swatchblade.lisp はソース コードの場所です。
Quicklisp のクイックロードを介してプロジェクトをロードできます。
* (ql:quickload "swatchblade")
loading output
* (swatchblade:start-web-server :port 8080)
Server started on port 8080.
次に、swatchblade システムに依存する別のプロジェクトを作成する場合:
quickproject:make-project "~/src/lisp/whimsytron/"
:depends-on '(swatchblade))
テストに関しては、テスト用に package.lisp に別の名前空間を追加できます:
(defpackage #:swatchblade-tests
(:use #:cl #:swatchblade))
テスト ファイルを作成し、コードを記述して、システム定義にファイルを追加します。
(asdf:defsystem #:swatchblade
:serial t
:depends-on (#:vecto
#:hunchentoot
#:cl-colors)
:components ((:file "package")
(:file "swatchblade")
(:file "swatchglade-tests")))
swatchblade-tests名前空間をロードして、テストを実行します。
ここにテストを含むサンプル プロジェクト
Quicklisp がすべての依存関係をシステムにインストールするのを避けたい場合は、私の知る限り、依存関係をインストールしてシステムを手動でロードする必要があります。
Quicklisp の作者である Zach Beane は、 quickproject の使用に関するより詳細な投稿をしています。