Next: 複雑な例, Previous: defsystemでシステムを定義する, Up: defsystemでシステムを定義する [Contents][Index]
まずシステム定義の例を挙げ、後のセクションでdefsystem
の完全な文法を解説します。
それでは単純なシステムを定義してみましょう。次の例はhello-lisp.asdというファイルに保存されます。(ASDFが"hello-lisp"
という名のシステムを処理するように指示されたときに、この定義を見つけられるようにするためです。)
;; Lispのコメントを書くことができます (defsystem "hello-lisp" :description "hello-lisp: a sample Lisp system." :version "0.0.1" :author "Joe User <joe@example.com>" :licence "Public Domain" :depends-on ("optima.ppcre" "command-line-arguments") :components ((:file "packages") (:file "macros" :depends-on ("packages")) (:file "hello" :depends-on ("macros"))))
それでは例を説明していきます。
defsystem
フォームはhello-lisp
という名前のシステムを定義します。このシステムはpackages.lisp、macros.lisp、hello.lispという3つのソースファイルを含んでいます。
.asd
ファイルと同じディレクトリにあります。
optima.ppcre
(正規表現のマッチングを行うための便利なインターフェースを提供するライブラリ)とcommand-line-arguments
(シェルコマンドから与えられた引数をパースするライブラリ)です。つまり、hello-lisp
を使うためには、ASDFがこの2つのシステムのある場所を見つけられるように設定されていなければなりません。ASDFはhello-lisp
をコンパイル、ロードする前にこの2つのシステムをロードするでしょう。
:bug-tracker
, :mailto
、:long-name
、:long-description
、:source-control
などが使えます。これらの使用は任意ですが、少なくとも:description
、:version
、:author
、:licence
は定義しておくことを強く推奨します。(特にQuicklispにソフトウェアを登録するつもりであれば。)
:version
の文字列はASDFにパースされるので、なんでもよいわけではありません。今のところは、ピリオド.
で区切られた非負整数のみが許容されています。(→ バージョン指定子)
defsystem
フォームだけを含んでいて、in-package
もなければ、パッケージの接頭辞asdf:
も付いていません。これが我々の推奨する書き方です。より複雑なシステム定義ファイルを書きたければ任意のLispコードが使えますが、可能ならばシンプルな定義に保っておくことを勧めます。そのほうが堅牢で、将来においても有効なシステム定義になるでしょうから。
以上のことを知っていれば、単純なシステムを定義するには十分です。次のセクションの例はずっと込み入っているので、複雑なことをしたいときの助けになるかもしれません。しかし、究極的には任意のLispコードが書けるのですから、完全な解説をすることはできませんが。