如何将本地项目添加到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 错误
如何让 Emacs/Slime/SBCL 识别 quicklisp 包