Windows10下Quicklisp安装时ASDF配置路径及项目加载问题
projects.conf存放位置 在Windows 10环境里,Common Lisp会把~解析为你的用户主目录,也就是C:\Users\ig88t。所以~/.config/common-lisp/source-registry.conf.d/projects.conf对应的实际路径是:
C:\Users\ig88t\.config\common-lisp\source-registry.conf.d\projects.conf
如果这个路径下的目录不存在,你需要手动逐层创建子目录(从.config开始依次建立),把projects.conf放到最终的source-registry.conf.d文件夹里,ASDF就能自动识别这个配置文件了。
你遇到的加载问题,核心是ASDF/Quicklisp还没识别到你的项目路径,这里有几个实用的解决办法:
方法一:通过source-registry配置永久生效
打开刚才提到的projects.conf文件,添加一行配置(路径用正斜杠或双反斜杠都可以,ASDF对正斜杠支持更友好):(:directory "C:/Users/ig88t/src/lisp/")保存后重启Lisp环境,ASDF就会扫描这个目录下的所有项目,之后直接执行
(ql:quickload "swatchblade")就能加载了。方法二:临时添加项目路径(重启后失效)
如果只是临时测试,你可以在Lisp REPL里执行以下命令:(push #P"C:/Users/ig88t/src/lisp/swatchblade/" asdf:*central-registry*) (ql:quickload "swatchblade")这个操作会把项目路径临时加入ASDF的注册表,不过下次重启Lisp时需要重新执行。
方法三:利用Quicklisp的local-projects目录
Quicklisp默认会自动识别quicklisp/local-projects目录下的项目,你可以把swatchblade文件夹直接复制到C:\Users\ig88t\quicklisp\local-projects里,或者创建一个符号链接(Windows命令行执行,需要管理员权限):mklink /D C:\Users\ig88t\quicklisp\local-projects\swatchblade C:\Users\ig88t\src\lisp\swatchblade这样既不用移动项目文件,Quicklisp也能自动找到你的项目。
另外别忘了检查swatchblade目录里是否存在swatchblade.asd文件——这是ASDF识别项目的核心配置文件,quickproject:make-project应该已经帮你生成了,但如果文件名不对,也会导致加载失败,确保ql:quickload的参数和.asd文件名完全一致(部分Lisp实现在Windows上大小写不敏感,但最好保持一致更稳妥)。
内容的提问来源于stack exchange,提问作者ig88th




