因此,在package-inferred-system扩展的6.5节中的asdf手册/文档中,该示例使用all.lisp文件来确定软件包(我/我们将假定它将包含该函数各自的所有功能和软件包信息)子目录)。

我想知道的是在all.lisp文件中包括所有函数和程序包声明的“正确”方式是什么。我是否要做一些类似的事情,包括在all.lisp文件中包含该子目录的所有函数声明,然后在asdf文件中使用register-system-packages函数。还是我可以忽略all.lisp文件,让编译器从文件中推断出软件包(但是我将不得不为我添加到该系统的每个文件使用register-system-packages函数)。

我只是想知道更多有关使用此系统的细节以及将新文件添加到系统时必须进行的文件和声明的信息。

很抱歉这个问题不透明;我似乎无法掌握该系统的细节

最佳答案

1-使用lisp-interface-library/*/all.lisp及其uiop:define-package子句在:use-reexport中查看其操作方式。

例如,查看pure/all.lisp:
(uiop:define-package :lil/pure/all (:nicknames :pure) (:import-from :lil/interface/all) (:use :closer-common-lisp) (:mix :fare-utils :uiop :alexandria) (:use-reexport :lil/interface/base :lil/interface/eq :lil/interface/order :lil/interface/group :lil/pure/empty :lil/pure/collection :lil/pure/iterator :lil/pure/map :lil/pure/set :lil/pure/alist :lil/pure/tree :lil/pure/hash-table :lil/pure/fmim :lil/pure/encoded-key-map :lil/pure/queue :lil/pure/iterator-implementation :lil/pure/map-implementation :lil/pure/set-implementation :lil/pure/alist-implementation :lil/pure/tree-implementation :lil/pure/hash-table-implementation :lil/pure/fmim-implementation :lil/pure/encoded-key-map-implementation :lil/pure/queue-implementation ))
2-这些天,我建议使用需要asdf 3.1的产品,而不要使用asdf-package-system。为了获得最大的向后不兼容性,请使用
#-asdf3.1 (error "<my system> requires ASDF 3.1 or later. Please upgrade your ASDF.")
然后在您的defsystem中,:class :package-inferred-system
3-我不会密切关注这个论坛。 ASDF问题可在asdf-devel邮件列表中找到更快的答案。

关于common-lisp - 如何将所有函数和程序包声明包括在名为asdf程序包推断系统的all.lisp文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30608100/

10-13 04:12