我想通过 asdf 将本地项目添加到已知项目中,但由于 asdf 是由 quicklisp 安装和配置的,并且*central-registry*
指向“#P/home/user/quicklisp/quicklisp/”,其中包含 .lisp 文件. 我不知道该怎么做,因为手册解释了指向目录的符号链接可以做到这一点,但我不想在 quicklisp 里面乱七八糟。(不过,它确实可以用作修补程序!)
因此:如何将本地项目添加到由quicklisp安装和配置的asdf(不是QUICKLISP)?
我想通过 asdf 将本地项目添加到已知项目中,但由于 asdf 是由 quicklisp 安装和配置的,并且*central-registry*
指向“#P/home/user/quicklisp/quicklisp/”,其中包含 .lisp 文件. 我不知道该怎么做,因为手册解释了指向目录的符号链接可以做到这一点,但我不想在 quicklisp 里面乱七八糟。(不过,它确实可以用作修补程序!)
因此:如何将本地项目添加到由quicklisp安装和配置的asdf(不是QUICKLISP)?
如果您使用 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/")
如果要扫描所有子目录。
因为asdf:*central-registry*
不仅仅是一条路径,它是路径名列表。你可以简单地做:
(push "/path-to-your-project/" asdf:*central-registry*)
。如果您使用 SBCL,您可以将此行添加到 ~/.sbclrc。
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 以查找您的系统 - 旧式。
放
(push "~/your/local/lisp/projects/folder/" ql:*local-project-directories*)
您.sbclrc
可以在没有符号链接或移动文件夹的情况下快速加载您的项目。
我知道你问过 asdf,但是当你实际使用 quicklisp 时,我认为你不想弄乱 asdf。