为了最终开始在我的 lisp 涂鸦中使用 asdf,我尝试设置一个简单的示例。这些文件是
; 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 中。
最佳答案
ASDF 系统与软件包不同。系统只是将一堆文件组合到单个应用程序或库中的一种方式,可以使用 Quicklisp 轻松编译、加载、测试或安装。单个系统中可能有多个包(甚至没有,尽管这很奇怪)。通常,库有一个与系统同名的“主”包,但这不是强制性的。
在本例中,系统 cl-wav
定义了一个名为 WAV
的包,因此您需要在包定义中使用它。对于库作者来说,将包命名为 CL-WAV
并使用 WAV
作为昵称可能会更好,但他们没有这样做。
(defpackage :example
(:use :cl :asdf :wav))
关于common-lisp - 我可以(asdf :load-system :foo),,但asdf仍然提示 '"foo“没有指定包”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131436/