Как добавить локальный проект в 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 для поиска ваших систем - старый стиль.