2017-09-09 7 views
1

最後に、私のLispのdoodlesでasdfを使い始めようとしています。ファイルは私は(asdf:load-system:foo)できますが、asdfはまだ "foo"がパッケージを指定していないと文句を言います。

; contents of example.asd 
(asdf:defsystem "example" 
    :name "example" 
    :depends-on ("foo") 
    :components ((:file "example"))) 

; contents of example.lisp 
(defpackage :example 
    (:use :cl :asdf :foo)) 
(in-package :example) 

( "foo" が実際に "CL-WAV" ですが、問題は、私は、ローカルにインストールされているパッケージのいずれかで持続する場合)です。今

、でも

(asdf:load-system :foo) 

作品、私は

(asdf:make :example) 

を評価しようとすると、私はこのエラーメッセージを取得実行しているものの:

The name "FOO" does not designate any package. 

は私が間違って何をやっているの?

私のasdfバージョンは "3.1.5"、パッケージ "foo"は(最新バージョンの)quicklispとともにインストールされており、これらはすべてSBCL 1.3.20で行われます。

+3

システムの名前は、システム内のすべてのパッケージの名前と同じである必要はありません。システム 'cl-wav'は' WAV'という名前のパッケージを持っているので、 '(:use:wav ...)'を使う必要があります。 – jkiiski

+0

あなたは正しいと思って解決しました!私はこれを以前試みたときになぜ "cl-wav"の代わりに "zpng"でうまくいかなかったのかまだ分かりません。今は "zpng"でも使えます。何かを見逃しているはずです。 – BlenderBender

+1

答えてください、@jkiiski – Svante

答えて

1

ASDFシステムはパッケージとは異なるものです。システムとは、Quicklispを使用して簡単にコンパイル、ロード、テスト、またはインストールできる単一のアプリケーションまたはライブラリに複数のファイルをまとめてグループ化する方法です。単一のシステムに複数のパッケージがあるかもしれません(または、それは不思議ですが、どれもありません)。通常、ライブラリはシステムと同じ名前の「メイン」パッケージを持っていますが、これは必須ではありません。

この場合、システムcl-wavWAVという名前のパッケージを定義しているため、パッケージ定義でそれを使用する必要があります。図書館の作者がCL-WAVというパッケージ名をニックネームとしてWAVと命名した方が良いかもしれませんが、そうではありませんでした。

(defpackage :example 
    (:use :cl :asdf :wav)) 
関連する問題