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 中找不到自定义控制器类
Spring Boot jdbc模板在自定义模式下的postgres中找不到表
Delphi DLL Project在自定义BPL中找不到单元,除非“Link with Runtime Packages”为True