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

Posted

技术标签:

【中文标题】ASDF 在自定义目录中找不到包【英文标题】:ASDF not finding package in custom directory 【发布时间】:2021-10-05 16:48:13 【问题描述】:

我是 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吗?

    但是,我不鼓励将此 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)

【讨论】:

以上是关于ASDF 在自定义目录中找不到包的主要内容,如果未能解决你的问题,请参考以下文章

在自定义拦截器中找不到 RealConnection.noNewExchanges() 的错误符号

在自定义类下拉菜单 Xcode 8.3.2 中找不到自定义控制器类

量角器:by.model 在自定义指令中找不到元素

Spring Boot jdbc模板在自定义模式下的postgres中找不到表

在自定义 Java AWS 应用程序中找不到类的序列化程序

Delphi DLL Project在自定义BPL中找不到单元,除非“Link with Runtime Packages”为True