【问题标题】:ASDF not finding package in custom directoryASDF 在自定义目录中找不到包
【发布时间】: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 中的步骤进行操作。任何帮助表示赞赏。

【问题讨论】:

    标签: emacs common-lisp asdf


    【解决方案1】:
    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)
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 2020-08-07
      • 2017-02-02
      • 2018-10-27
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多