Я думаю, что вы на самом деле пытаетесь сделать так, чтобы ASDF просто предупреждал вас, а не вызывал отладчик во время ошибок компиляции. Измените *compile-file-warnings-behaviour*
и *compile-file-failure-behaviour*
и прочитайте раздел по обработке ошибок в руководстве.
Остальная часть этого ответа - как проверить всю систему. Вы можете упаковать файлы для загрузки в свои собственные системы и сделать это следующим образом.
Из Руководства ASDF, раздел 6.3.8 .
6.3.8 Слабо зависит от
Мы НЕ рекомендуем использовать эту функцию.
Так что вы могли бы просто использовать его в любом случае. Как это:
(defpackage :foo-system
(:use :cl :asdf))
(in-package :foo-system)
(defsystem foo
:description "The main package that maybe loads bar if it exists."
:weakly-depends-on (:bar)
:components ((:file "foo")))
Просто верно?
Вот что они рекомендуют:
Если у вас возникнет желание написать систему foo, которая слабо зависит от
Системная строка, мы рекомендуем вместо этого написать системный Foo в
параметрический способ, и предложить некоторую специальную переменную и / или некоторую зацепку
специализировать его поведение; тогда вы должны написать системный foo + bar, который
делает сцепление вещей вместе.
Я никогда не видел ни одного из них в дикой природе, возможно потому, что делать это таким ужасным путаницей.
(defpackage :bar-system
(:use :cl :asdf))
(in-package :bar-system)
(defsystem bar
:description "The package that maybe exists and is needed by foo."
:components ((:file "bar")))
(defpackage :foo+bar-system
(:use :cl :asdf))
(in-package :foo+bar-system)
(defsystem foo+bar
:version "0.1.0"
:description "Hook together foo and bar."
:author "Spenser Truex <web@spensertruex.com>"
:serial t
:components ((:file "foo+bar")))
(defpackage :foo-system
(:use :cl :asdf))
(in-package :foo-system)
(defsystem foo
:description "The main package that maybe loads bar if it exists."
:depends-on (:foo+bar)
:components ((:file "foo")))