我正在使用Quicklisp在我的Common Lisp项目中加载库,并且 我需要加载某些库的自定义版本,而不是Quicklisp提供的版本。
库的自定义版本存储在Quicklisp的本地项目目录中,并且本地项目已注册。但是,Quicklisp仍尝试加载其自己的库版本。
如何安排Quicklisp偏爱图书馆的定制服务? (旁边的问题:我怎么问Quicklisp它将在哪个位置加载库?)
答案 0 :(得分:6)
如果可以使用ASDF加载项目的系统文件,则优先于Quicklisp提供的版本加载该文件。最简单的方法是将项目的源代码放入~/quicklisp/local-projects/
(或安装quicklisp而不是~/quicklisp/
的任何位置)中并运行(ql:register-local-projects)
。但是其他方法也可以使用,例如更新ASDF注册表配置以及通过注册表将项目放在ASDF已知的某个地方。
要了解Quicklisp将项目加载到哪里,可以使用(ql:where-is-system "system-name")
。
记住
local-projects机制是通过特殊变量
ql:*local-project-directories*.
配置的,默认情况下,它仅在Quicklisp安装目录中包括local-projects子目录,但是您可以随时添加或删除目录以拥有更多位置扫描系统。 要完全禁用本地项目机制,请将ql:*local-project-directories*
设置为NIL
。