我正在尝试让 Common Lisp 在我的 Windows 10 计算机上运行,但在获取 ASDF/(ql:quickload "...")
时遇到了问题加载项目。我使用以下命令生成了给定的项目(创建 C:\Users\ig88t\src\lisp
文件夹后):
(ql:quickload "quickproject")
(quickproject:make-project "~/src/lisp/swatchblade/" :depends-on '(vecto hunchentoot))
它正确生成了项目,我可以在 ~/src/lisp/swatchblade
查看源代码.
但我无法通过
加载它(ql:quickload "swatchblade")
我没有加载,而是收到一条错误消息
System "swatchblade" not found [Condition of type QUICKLISP-CLIENT:SYSTEM-NOT-FOUND]
我将阅读两本手册,其中一本 Xach wrote另一个tailored for Windows 。 Xach推荐~/.config/common-lisp/source-registry.conf.d/projects.conf
而第二个建议 ~/.config/common-lisp/source-registry.conf.d/asdf.conf
。我目前正在使用 Xach 编写的版本,因为它在 Linux 上对我有用。
访问the manual for ASDF看来~/AppData/Local/
是我应该存储 .config/common-lisp/source-registry.conf.d/projects.conf
的地方。我尝试将其存储在 ~/AppData/Local/config/...
以及 ~/AppData/Local/.config/...
无济于事。我注意到 Clozure CL 在 ~/AppData/Local/common-lisp
中安装了一些 Quicklisp 数据,所以我尝试输入 source-registry.conf.d
文件夹,如~/AppData/Local/common-lisp/source-registry.conf.d/projects.conf
也可以,但是没用。
我尝试了很多不同的变体,将文件夹放置在不同的位置,但我还没有找到正确的方法。我非常感谢任何在 Windows 上使用 Common Lisp 和 Quicklisp 的人提供的帮助/建议。
我正在使用 Clozure CL 1.11.5 以及 ASDF 版本 3.1.5 附带的 wx86cl64 二进制文件,以防万一。
--- 编辑 ---
在与 Xach 讨论这个问题后,我尝试了:
(quickproject:make-project "~/quicklisp/local-projects/swatch" :depends-on '(vecto hunchentoot))
然后运行:
(ql:register-local-projects)
但是运行时:
(ql:quickload "swatch")
它再次失败:
System "swatch" not found [Condition of type QUICKLISP-CLIENT:SYSTEM-NOT-FOUND]
他说这可能与this PR有关用于快速项目。
--- 编辑 #2 ---
我最近尝试使用 SBCL,一切似乎都正常。我可以使用 quickproject
创建项目并加载它们。请注意,我无法加载使用 quickproject
创建的项目下CCL
。但是,当我重新启动 slime/emacs 时,我无法加载之前在 SBCL
下创建的任何项目。 .
; SLIME 2.20
CL-USER> (ql:quickload "quickproject")
To load "quickproject":
Load 1 ASDF system:
quickproject
; Loading "quickproject"
("quickproject")
CL-USER> (quickproject:make-project "~/quicklisp/local-projects/test/"
:depends-on '(vecto))
"test"
CL-USER> (ql:quickload "test")
To load "test":
Load 1 ASDF system:
test
; Loading "test"
[package test]
("test")
CL-USER>
--- 中场休息...重新启动史莱姆 ---
; SLIME 2.20
CL-USER> (ql:quickload "test")
; Evaluation aborted on #<QUICKLISP-CLIENT:SYSTEM-NOT-FOUND {10034555B3}>.
CL-USER>
所以我不知道是什么原因导致问题或如何解决它,但似乎创建/加载项目在 Clozure CL 下永远无法工作,并且只能在 SBCL 的当前 session 中工作。
--- 编辑 #3 ---
看来我对 SBCL 的看法是错误的。看来当我运行时
(quickproject:make-project "~/quicklisp/local-projects/test/"
:depends-on '(vecto))
它在 C:\Users\ig88t\AppData\Roaming\quicklisp\local-projects
中创建一个文件夹而不是 C:\Users\ig88t\quicklisp\local-projects
。正如我之前所说,它可以加载在当前 session 中创建的项目,但无法在新 session 中找到它们。
最佳答案
(asdf::user-source-registry :direction :output)
关于windows - 在 Windows 10 上安装 Quicklisp 时,我应该将 ~/.config/common-lisp/source-registry.conf.d/projects.conf 放在哪里以便 ASDF 查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48675274/