我在使用普通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")))
文件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
我的用户定义的系统位于哪里。我学习了这教程。
asdf
找到我的用户定义的系统,这样我就不必手动加载它们了?谢谢你的帮助!
发布于 2014-05-10 22:36:59
您需要在defsystem
中使用:depends-on
子句声明依赖项。:use
子句仅使已经加载的包的名称可用,但不会加载它们。
顺便说一下,您的.asd
文件不应该包括主包的defpackage
。虽然声明一个特殊包以在其中运行defsystem
是有意义的,但是常规包应该在.lisp
文件中声明。
编辑:--这也可能解决第二个问题。如果不是,可能是因为ASDF不会在路径中自动展开~
字符。在这种情况下,将其替换为主目录的实际路径。
发布于 2014-05-13 18:24:35
看起来您使用的是未定义的分形:defsystem,而不是asdf:defsystem。
2- ASDF接受指令(:目录(:home“lisp_proj/分形_2”))
3-从3.1.2开始,你可以把所有东西都放在~/common/下面
看在上帝的份上RTFM!
https://stackoverflow.com/questions/23586404
复制相似问题