9

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

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

4

4 回答 4

15

如果您使用 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中的说明 进行配置。

例如,您可以这样说:

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

在你~/.config/common-lisp/source-registry.conf.d/my-asdf.conf添加一个目录,或者

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

如果要扫描所有子目录。

于 2012-06-29T16:31:49.977 回答
6

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

于 2012-06-29T13:27:33.140 回答
3

ASDF 手册在第 3 节中有:

从 ASDF 2 开始,配置 ASDF 在何处找到您的系统的首选方法是源注册工具,在本手册的单独章节中有详细描述。请参阅控制 ASDF 在何处搜索系统

控制 ASDF 搜索系统的位置中的第 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语法在 配置 ASDF 以查找您的系统中进行了描述。

asdf:*central-registry* 现在已贬值。请参阅第 3.2 小节:配置 ASDF 以查找您的系统 - 旧式

于 2012-06-30T17:57:33.840 回答
3

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

.sbclrc可以在没有符号链接或移动文件夹的情况下快速加载您的项目。

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

于 2019-08-29T08:32:18.327 回答