Как добавить локальный проект в asdf, настроенный quicklisp

Я хочу добавить локальный проект в известные проекты с помощью asdf, но из-за того, что asdf был установлен и настроен с помощью quicklisp и *central-registry* указывает на "#P/home/user/quicklisp/quicklisp/", который содержит файлы.lisp. Я не знаю, как это сделать, так как руководство объясняет, что символическая ссылка в каталог будет делать это, но я не хочу возиться внутри quicklisp. (Это работает как исправление, хотя!)

Следовательно: Как добавить локальный проект в asdf (НЕ QUICKLISP), который был установлен и настроен с помощью quicklisp?

3 ответа

Решение

Если вы используете Quicklisp, вы можете использовать выделенный каталог~/quicklisp/local-projects/ который сканируется перед другими каталогами. Чтобы его использовать, достаточно поставить свой проект или символическую ссылку.

(quickproject:make-project "~/quicklisp/local-projects/my-new-website/"
  :depends-on '(restas parenscrit cl-who))

(quickproject:make-project "~/src/lisp/my-cool-gui/"
  :depends-on '(qt))

$ ln -s ~/src/lisp/my-cool-gui ~/quicklisp/local-projects/my-cool-gui  

Однако, если вы действительно хотите настроить ASDF сделать, как описано в документации.

Например, вы можете поместить это:

(:directory "~/src/lisp/my-project-XYZ/")

в вашем ~/.config/common-lisp/source-registry.conf.d/my-asdf.conf добавить каталог или

(:tree "~/src/lisp/")

если вы хотите, чтобы все подкаталоги были отсканированы.

Как asdf:*central-registry* это не просто один путь, это список путей. Вы можете просто сделать:(push "/path-to-your-project/" asdf:*central-registry*), Если вы используете SBCL, вы можете добавить эту строку в ~/.sbclrc.

Положить

(push "~/your/local/lisp/projects/folder/" ql:*local-project-directories*)

в вашем .sbclrc и вы можете быстро загрузить свои проекты без символических ссылок или перемещения папок.

Я знаю, что вы спрашивали об asdf, но я не думаю, что вы хотите возиться с asdf, когда вы на самом деле используете quicklisp.

Руководство ASDF имеет в разделе 3:

Начиная с ASDF 2, предпочтительным способом настройки того, где ASDF находит ваши системы, является средство регистрации исходного кода, полностью описанное в его собственной главе этого руководства. См. Контроль, где ASDF ищет системы.

Пункт 7 в Контроллинг, где ASDF ищет системы

Исходный реестр будет настроен из системного каталога конфигурации /etc/common-lisp/source-registry.conf.d/, если он существует.

Это местоположение доступно в Debian и является тем, что я использую. По умолчанию Debian помещает источники загруженных библиотек CL в /usr/share/common-lisp/source, Тем не менее, я не знаю (хотя я пытался выяснить), как это место стало известно ASDF. Таким образом, вы можете добавить файлы с путевыми именами в это местоположение, чтобы эти пути были известны ASDF. Я добавил файл, /etc/common-lisp/source-registry.conf.d/04-local.conf, содержащий

(: дерево #p"/usr/local/share/common-lisp/source/")

и теперь я могу поместить источники локально загруженных библиотек CL в /usr/local/share/common-lisp/source/ и они будут видны ASDL. :tree Синтаксис описан в разделе Настройка ASDF для поиска ваших систем.

asdf: * central-registry * теперь устарел. См. Подраздел 3.2: Настройка ASDF для поиска ваших систем - старый стиль.

Другие вопросы по тегам