有没有一种方法可以使asdf加载目录中的所有文件(* .lisp),而无需在我的.asd文件中全部命名?在目录或文件名规范中都不能使用通配符。有人可以帮忙吗?
答案 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扩展名,可以满足您的要求。我仍然会使用打包推断系统。