Получение asdf для загрузки всех файлов в каталоге - PullRequest
0 голосов
/ 17 января 2019

Есть ли способ заставить asdf загружать все файлы (* .lisp) в каталог, не называя их всех в моем файле .asd? Использование символов подстановки в спецификации каталога или имени файла не работает. Может кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Вы можете использовать расширение ASDF «система определения пакетов»: https://common -lisp.net / project / asdf / asdf / The-package_002dinferred_002dsystem-extension.html # The-package_002dinferred_002dsystem-extension . Для этого вам придется придерживаться соглашения об именах каталогов и файлов, но оно (на первый взгляд) немного ближе к тому, как такие вещи организованы на других языках.

Я должен признать, что предпочитаю явное расположение в файле asd, потому что оно четко разделяет понятия систем, пакетов и файлов.

0 голосов
/ 22 января 2019

Репозиторий asdf поставляется с расширением asdf / contrib / wild-modules.lisp, которое делает то, что вы говорите. Вместо этого я бы по-прежнему использовал пакет-выведенную систему.

0 голосов
/ 17 января 2019

См. 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, чтобы ваши зависимости были немного более явными.

...