如何解决将 ASDF 源注册表初始化到特定位置
目前,我将 ASDF 初始化到高级目录:
(asdf:initialize-source-registry
`(:source-registry
(:tree "D:\\Users Data\\Dave\\SW Library\\AI\\")
:inherit-configuration))
是否可以通过明确列出我当前正在处理的项目的目录来减少通过子目录的递归搜索时间?执行此操作的 :source-registry
格式是什么? (我在 ASDF 手册中找不到它。不想简单地以旧样式将目录添加到 asdf:*central-registry*
。)
解决方法
关于您关于“明确列出目录”的具体初始问题,manual 表示将 :tree
关键字替换为 :directory
应该可以防止递归:
(asdf:initialize-source-registry
'(:source-registry
(:directory "D:/this/dir/")
(:directory "D:/that/dir/")
:inherit-configuration))
我很确定即使在 Windows 上您也可以在路径名中使用正斜杠。
编辑。在路径中添加了终端斜线。
,解决此问题的一种方法是让 Quicklisp 为您完成。如果您将系统安装在 QL 的 local-projects
目录下,那么它将执行一次搜索,然后缓存结果。这很聪明:
这是通过在
(来自 local-projects.lisp
中的评论。)
更好的是:如果它决定需要重做搜索,它会在您尝试加载第一个系统时执行,而不是之前。因此,映像启动时间不受影响,您可以在预期支付时支付成本。 QL 是……写得很好。
在实践中,因为我将系统深埋在 local-projects
目录下,所以我明确接触该目录以强制 QL 再次搜索。
您可以拥有多个本地项目目录(我尚未测试过),并通过设置 ql:*local-projects-directories*
来控制它们的位置。
使用这种方法,据我所知,您可以使用原始 ASDF 或 Quicklisp 来构建和加载系统。我从不使用原始 ASDF,所以我不能保证这有效。
当然,这需要安装 Quicklisp。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。