我真正想要的是源内测试定义:
假设我有一个 asdf 系统:
(defsystem simple-system
:serial t
:components ((:module "src"
:components
((:file "0-package")
(:file "1-tests-stubs")
(:file "2-code") ...))))
还有另一个系统来测试第一个:
(defsystem simple-system-tests
:serial t
:components ((:module "src"
:components
((:file "0-package")
(:file "1-tests-real")
(:file "2-code") ...))))
它们之间的唯一区别是在simple-systemI have 1-tests-stubswhere 在simple-system-testsI have 中1-tests-real。在1-tests-stubs我定义了一个宏(defmacro def-test (&rest _args) nil),它在1-tests-real.
现在我想编译simple-systemwith(declare (optimize (safety 0) (debug 0) (speed 3)))和simple-system-testswith 相反(declare (optimize (safety 3) (debug 3) (speed 0)))。
我该怎么做(在哪里放置以及如何以通用方式为这两个系统设置这些声明)?
如何重用simple-systemin 的定义simple-system-tests(不要重复自己重新键入所有模块/组件)?
而且我必须确保所有文件都针对每个系统使用不同的优化级别重新编译。
此外,如果每个系统文件仅在它们被更改时才重新编译(每个系统的已编译文件的自己的副本?),那将是很好的。