获取asdf加载目录中的所有文件

时间:2019-01-17 14:04:48

标签: common-lisp asdf

有没有一种方法可以使asdf加载目录中的所有文件(* .lisp),而无需在我的.asd文件中全部命名?在目录或文件名规范中都不能使用通配符。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

请参见DIRECTORY

 CL-USER> (directory "*.lisp")
 => ("a.lisp"
     "b.lisp"
     ...)

然后,为每个文件调用LOAD

但是,您也可以这样做:

CL-USER> (loop for f in * collect `(:file ,(pathname-name f)))
((:file "a") (:file "b"))

然后,您可以将其复制到.asd文件中,以便您的依赖项更加明确。

答案 1 :(得分:3)

您可以使用ASDF的“程序包推断系统”扩展名:https://common-lisp.net/project/asdf/asdf/The-package_002dinferred_002dsystem-extension.html#The-package_002dinferred_002dsystem-extension。为此,您必须遵循目录和文件命名约定,但是(从表面上看)它与其他语言的组织方式有点相近。

我不得不承认,我更喜欢asd文件中的显式布局,因为它使系统,软件包和文件的概念清晰可见。

答案 2 :(得分:1)

asdf存储库附带一个asdf / contrib / wild-modules.lisp扩展名,可以满足您的要求。我仍然会使用打包推断系统。