首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >asdf构建与通用Lisp

asdf构建与通用Lisp
EN

Stack Overflow用户
提问于 2014-05-10 21:16:06
回答 2查看 561关注 0票数 0

我在使用普通lisp的asdf构建工具时遇到了麻烦。这是我的fractals.asd文件:

代码语言:javascript
运行
复制
(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.lispfractal-lab.lisp在文件的开头都有(in-package :fractals)语句。然而,我自动收到一个错误说The name "CL-OPENGL" does not designate any package.我不明白为什么这是错误的。此外,如果我不包括这些库,那么我必须手动要求他们自己.我创建了一个名为:~/.config/common-lisp/source-registry.conf.d/的目录,其中放置了一个名为fractals2.conf的文件,该文件包含以下内容:

代码语言:javascript
运行
复制
(:directory "~/lisp_proj/fractals2/")

这是我的fractals.asd文件的目录,如上面所示。显然,这应该告诉asdf我的用户定义的系统位于哪里。我学习了教程。

  • 总之,如何让asdf找到我的用户定义的系统,这样我就不必手动加载它们了?

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-10 22:36:59

您需要在defsystem中使用:depends-on子句声明依赖项。:use子句仅使已经加载的包的名称可用,但不会加载它们。

顺便说一下,您的.asd文件不应该包括主包的defpackage。虽然声明一个特殊包以在其中运行defsystem是有意义的,但是常规包应该在.lisp文件中声明。

编辑:--这也可能解决第二个问题。如果不是,可能是因为ASDF不会在路径中自动展开~字符。在这种情况下,将其替换为主目录的实际路径。

票数 2
EN

Stack Overflow用户

发布于 2014-05-13 18:24:35

看起来您使用的是未定义的分形:defsystem,而不是asdf:defsystem。

2- ASDF接受指令(:目录(:home“lisp_proj/分形_2”))

3-从3.1.2开始,你可以把所有东西都放在~/common/下面

看在上帝的份上RTFM!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23586404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档