尝试最终开始使用asdf作为我的lisp涂鸦,我尝试设置一个简单的例子。文件是
; 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-version是“3.1.5”,软件包“foo”与(最新版本)quicklisp一起安装,所有这些都发生在SBCL 1.3.20中。
答案 0 :(得分:1)
ASDF系统与包装不同。系统只是将一堆文件组合在一个应用程序或库中的一种方法,可以使用Quicklisp轻松编译,加载,测试或安装。单个系统中可能有多个软件包(甚至没有,尽管这很奇怪)。通常,库具有与系统同名的“主”包,但这不是强制性的。
在这种情况下,系统cl-wav
定义了一个名为WAV
的包,因此您需要在包定义中使用它。图书馆作者可能更好地将包CL-WAV
命名为WAV
作为昵称,但他们没有这样做。
(defpackage :example
(:use :cl :asdf :wav))