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

Sim*_*Sim 8 common-lisp asdf quicklisp

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

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

Dai*_*rod 13

如果使用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  
Run Code Online (Sandbox Code Playgroud)

但是,如果您确实要ASDF按照文档中的说明 进行配置.

例如,您可以这样:

(:directory "~/src/lisp/my-project-XYZ/")
Run Code Online (Sandbox Code Playgroud)

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

(:tree "~/src/lisp/")
Run Code Online (Sandbox Code Playgroud)

如果您想要扫描所有子目录.


小智 5

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

  • 在ASDF手册中描述*central-registry*被弃用:"不建议新用户使用这种用于配置ASDF的旧样式,但老用户支持它" (5认同)