我试图让 Common Lisp 在我的 Windows 10 机器上运行,但在ASDF/(ql:quickload "...")
加载项目时遇到了问题。我使用以下命令生成了给定的项目(在创建C:\Users\ig88t\src\lisp
文件夹之后):
(ql:快速加载“快速项目”)
(quickproject:make-project "~/src/lisp/swatchblade/" :depends-on '(vecto hunchentoot))
哪个正确生成项目,我可以在~/src/lisp/swatchblade
.
但我无法通过加载它
(ql:快速加载“swatchblade”)
我收到一条错误消息,而不是加载
未找到系统“swatchblade”[QUICKLISP-CLIENT:SYSTEM-NOT-FOUND 类型的条件]
我要阅读两本手册,一本是Xach 编写的,另一本是为 Windows 量身定制的。Xach 推荐~/.config/common-lisp/source-registry.conf.d/projects.conf
,而第二个推荐~/.config/common-lisp/source-registry.conf.d/asdf.conf
. 我目前正在使用 Xach 编写的版本,因为它在 Linux 上对我有用。
按照ASDF的手册,这似乎~/AppData/Local/
是我应该存储的地方.config/common-lisp/source-registry.conf.d/projects.conf
。我曾尝试将其存储在~/AppData/Local/config/...
也~/AppData/Local/.config/...
无济于事。我注意到 Clozure CL 在 中安装了一些 quicklisp 数据~/AppData/Local/common-lisp
,所以我尝试将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:注册本地项目)
但在运行时:
(ql:快速加载“样本”)
它再次失败了:
未找到系统“样本”[QUICKLISP-CLIENT:SYSTEM-NOT-FOUND 类型的条件]
他说这可能与quickproject的这个PR有关。
--- 编辑 #2 ---
我最近尝试使用 SBCL,一切似乎都在工作。我可以使用quickproject
并加载它们来创建项目。请注意,我无法加载使用quickproject
under创建的项目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 的当前会话中工作。
--- 编辑 #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
。如前所述,它可以加载在当前会话中创建的项目,但无法在新会话中找到它们。