微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASDF 在自定义目录中找不到包

如何解决ASDF 在自定义目录中找不到包

我是 Common Lisp 的新手,我在 Windows 10 上使用 Emacs/SLIME,我正在尝试了解 CL 和 ASDF/打包的工作原理。

我在目录“D:\DropBox\my-packages”中有一个自定义包“my-pack”。

我在以下位置创建了一个 .conf 文件

%LOCALAPPDATA%\config\common-lisp\source-registry.conf.d\ 

添加了这一行:

(:tree "D:\\DropBox\\my-packages\\")

我打开了 Emacs,启动了 SLIME 并通过 REPL 创建了项目:

(cl-project:make-project #p"D:/DropBox/my-packages/my-pack)

我验证了项目在目录中,然后用asdf(版本3.3.1)加载系统:

(asdf:load-system :my-pack)

而且效果很好。

但是当我退出并重新启动 Emacs 时,在尝试加载系统时出现以下错误

Component :MY-PACK not found
   [Condition of type ASDF/FIND-COMPONENT:MISSING-COMPONENT]

据我所知,我已按照 manual 中的步骤操作。任何帮助表示赞赏。

解决方法

  1. cl-project 的 make-project 以这一行结尾:
(push dir asdf:*central-registry*)

它将新项目的目录添加到此列表中,该列表告诉 ASDF 在哪里查找项目。重新启动 CL 时它的值是多少?

2.

\config\common-lisp\

不应该是.config吗?

  1. 但是,我不鼓励将此 conf 文件与 :tree 一起使用。文档说:

告诉 ASDF 递归扫描所有子目录

因此,想象一下,如果您尝试自己进行 Web 开发并安装,例如,使用 npm 或等效工具安装 JavaScript 依赖项,您最终会得到一个巨大的 node_modules/,您的 Lisp 现在将需要一个几秒钟即可启动。

我建议将您的项目放在 ~/common-lisp/~/quicklisp/local-projects 下,或者创建符号链接,或者将您的项目添加到您的 Lisp 启动文件中的 asdf:*central-registry* 中:

;; .sbclrc
(pushnew "/home/me/projects/ciel/" asdf:*central-registry* :test #'equal)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。