我在使用普通lisp的asdf
构建工具时遇到问题。这是我的fractals.asd
文件:
(defpackage :fractals
(:use :cl :asdf :cl-opengl :cl-glu :cl-glut)
(:export :frac-tree :draw-tree))
(in-package :fractals)
;----------------------------------------------------------
(defsystem fractals
:name "fractals"
:version "0.0.0"
:serial t
:components ((:file "frac-tree")
(:file "fractal-lab")))
ffiles fract-tree.lisp
和fractal-lab.lisp
在文件的最开头都有语句(in-package :fractals)
。但是,我自动收到错误消息The name "CL-OPENGL" does not designate any package.
我不明白为什么这是错误的。此外,如果我不包含这些库,那么我必须自己手动要求它们...我创建了一个名为~/.config/common-lisp/source-registry.conf.d/
的目录,其中我放置了一个名为fractals2.conf
的文件,其中包含以下内容: :
(:directory "~/lisp_proj/fractals2/")
这是我fractals.asd
文件的目录,如上所示。显然,这应该告诉asdf
我的用户定义的系统所在的位置。我按照this教程。
asdf
找到我的用户定义系统,以便我不必手动加载它们?感谢您的帮助!
答案 0 :(得分:2)
您需要使用defsystem
子句在:depends-on
中声明您的依赖项。 :use
的{{1}}子句仅使已加载的包的名称可用,但不会加载它们。
顺便说一句,您的defpackage
文件不应包含主程序包的.asd
。虽然声明一个特殊包来运行defpackage
是有意义的,但应该在defsystem
个文件中声明常规包。
编辑:这也可以解决您的第二个问题。如果不是,可能是因为ASDF不会自动扩展路径中的.lisp
字符。在这种情况下,请将其替换为主目录的实际路径。
答案 1 :(得分:0)
1-看起来你使用的是未定义的分形:defsystem而不是asdf:defsystem
2- ASDF DSL接受指令(:directory(:home“lisp_proj / fractals_2”))
3-从3.1.2开始,您可以将所有内容放在〜/ common-lisp /
下4-为了上帝的缘故,RTFM!