Common lisp 正在将ASDF源注册表初始化到特定位置

Common lisp 正在将ASDF源注册表初始化到特定位置,common-lisp,asdf,Common Lisp,Asdf,目前,我将ASDF初始化为一个高级目录: (asdf:initialize-source-registry `(:source-registry (:tree "D:\\Users Data\\Dave\\SW Library\\AI\\") :inherit-configuration)) 通过显式列出我当前正在处理的项目的目录,可以减少通过子目录进行递归搜索的时间吗?执行此操作的:源注册表格式是什么?(我在ASDF手册中找不到它。我不想简单地将目

目前,我将ASDF初始化为一个高级目录:

(asdf:initialize-source-registry
  `(:source-registry
     (:tree "D:\\Users Data\\Dave\\SW Library\\AI\\")
     :inherit-configuration))

通过显式列出我当前正在处理的项目的目录,可以减少通过子目录进行递归搜索的时间吗?执行此操作的
:源注册表
格式是什么?(我在ASDF手册中找不到它。我不想简单地将目录添加到旧式的
ASDF:*central registry*

解决此问题的一种方法是让Quicklisp为您执行此操作。如果您将系统安装在QL的
本地项目
目录下,那么它将执行一次搜索,然后缓存结果。这是非常明智的:

其工作原理是将系统文件路径名缓存在/local projects/system-index.txt中。只要本地项目目录上的时间戳比系统索引文件上的时间戳新,就会重新扫描并缓存整个树

(来自
local projects.lisp
中的注释)

更好的是:如果它决定需要重做搜索,它会在您尝试加载第一个系统时执行,而不是在加载之前。因此,映像启动时间不受影响,并且您在预期的时间内支付成本。QL是。。。写得很好

实际上,因为我将我的系统深深地埋在
本地项目
目录下,所以我显式地触摸该目录以迫使QL再次搜索

通过设置
ql:*本地项目目录*
,您可以拥有多个本地项目目录(我还没有测试过这个),并控制它们的位置

使用这种方法,正如我所知,您可以使用原始ASDF或Quicklisp来构建和加载系统。我从不使用原始ASDF,所以我不能保证这是有效的


当然,这样做需要安装Quicklisp。

关于“显式列出目录”的特定初始问题,指示将
:tree
关键字替换为
:directory
应防止递归:

(asdf:initialize-source-registry
  '(:source-registry
     (:directory "D:/this/dir/")
     (:directory "D:/that/dir/")
     :inherit-configuration))
我敢肯定,即使在Windows上,您也可以在路径名中使用正向斜杠



编辑。在路径中添加了终端斜杠。

这可能对我有用,因为我混合了在线和本地quicklisp库。但不希望将项目文件存储在与quicklisp和其他管理器相同的驱动器上。将尝试重置ql:*本地项目目录*,以查看其是否有效。谢谢