如何将本地项目添加到quicklisp配置的asdf

Posted

技术标签:

【中文标题】如何将本地项目添加到quicklisp配置的asdf【英文标题】:How to add a local project to asdf configured by quicklisp 【发布时间】:2012-06-30 22:35:37 【问题描述】:

我想通过 asdf 将本地项目添加到已知项目中,但由于 asdf 是由 quicklisp 安装和配置的,并且*central-registry* 指向“#P/home/user/quicklisp/quicklisp/” ,其中包含 .lisp 文件。我不知道该怎么做,因为manual 解释说指向目录的符号链接可以做到这一点,但我不想在quicklisp 中乱七八糟。 (不过,它确实可以用作修补程序!)

因此:如何将本地项目添加到由 quicklisp 安装和配置的 asdf (NOT QUICKLISP)?

【问题讨论】:

【参考方案1】:

asdf:*central-registry* 不仅仅是一个路径,它是路径名列表。你可以简单地做: (push "/path-to-your-project/" asdf:*central-registry*)。 如果你使用 SBCL,你可以将此行添加到 ~/.sbclrc。

【讨论】:

在 ASDF 手册中将 central-registry 描述为已弃用:“不建议新用户使用这种用于配置 ASDF 的旧样式,但老用户支持它” 【参考方案2】:

如果您使用 Quicklisp,您可以使用专用目录 ~/quicklisp/local-projects/ 在其他人之前被扫描 目录。要使用它,只需输入您的项目或符号链接即可。

(quickproject:make-project "~/quicklisp/local-projects/my-new-website/"
  :depends-on '(restas parenscrit cl-who))

(quickproject:make-project "~/src/lisp/my-cool-gui/"
  :depends-on '(qt))

$ ln -s ~/src/lisp/my-cool-gui ~/quicklisp/local-projects/my-cool-gui  

但是,如果您真的想配置 ASDF,请按照 documentation .

例如你可以这样写:

(:directory "~/src/lisp/my-project-XYZ/")

在您的~/.config/common-lisp/source-registry.conf.d/my-asdf.conf 中 添加目录,或

(:tree "~/src/lisp/")

如果要扫描所有子目录。

【讨论】:

【参考方案3】:

ASDF 手册在Section 3:

自 ASDF 2 以来,配置 ASDF 查找您的位置的首选方式 系统是源注册工具,在它自己的完整描述 本手册的章节。见Controlling where ASDF searches for systems。

Controlling where ASDF searches for systems 中的第 7 项 是

如果存在,源注册表将从系统配置目录 /etc/common-lisp/source-registry.conf.d/ 配置。

这个位置在 Debian 中是可用的并且是我使用的。默认情况下,Debian 将下载的 CL 库的来源放在/usr/share/common-lisp/source 中。但是,我不知道(尽管我试图找出)这个位置是如何被 ASDF 知道的。 因此,您可以将带有路径名的文件添加到此位置,以使 ASDF 知道这些路径名。我添加了一个文件/etc/common-lisp/source-registry.conf.d/04-local.conf,其中包含

(:tree #p"/usr/local/share/common-lisp/source/")

现在我可以将本地下载的 CL 库的源代码放在 /usr/local/share/common-lisp/source/ 中,它们将对 ASDL 可见。 :tree 语法在 Configuring ASDF to find your systems.

asdf:*central-registry* 现已折旧。见Subsection 3.2: Configuring ASDF to find your systems — old style。

【讨论】:

【参考方案4】:

(push "~/your/local/lisp/projects/folder/" ql:*local-project-directories*)

在您的.sbclrc 中,您无需符号链接或移动文件夹即可快速加载您的项目。

我知道你问过 asdf,但我认为你不想在实际使用 quicklisp 时乱用 asdf。

【讨论】:

以上是关于如何将本地项目添加到quicklisp配置的asdf的主要内容,如果未能解决你的问题,请参考以下文章

在 quicklisp 项目上使用 buildapp 时如何修复 asdf 错误

如何使用 quicklisp 更新依赖项?

如何将本地化添加到项目

如何让 Emacs/Slime/SBCL 识别 quicklisp 包

无法将 quicklisp 与 clozure-cl 一起使用

如何在 quicklisp 中升级 asdf 版本?