我真正想要的是源内测试定义:
假设我有一个 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-system
I have 1-tests-stubs
where 在simple-system-tests
I have 中1-tests-real
。在1-tests-stubs
我定义了一个宏(defmacro def-test (&rest _args) nil)
,它在1-tests-real
.
现在我想编译simple-system
with(declare (optimize (safety 0) (debug 0) (speed 3)))
和simple-system-tests
with 相反(declare (optimize (safety 3) (debug 3) (speed 0)))
。
我该怎么做(在哪里放置以及如何以通用方式为这两个系统设置这些声明)?
如何重用simple-system
in 的定义simple-system-tests
(不要重复自己重新键入所有模块/组件)?
而且我必须确保所有文件都针对每个系统使用不同的优化级别重新编译。
此外,如果每个系统文件仅在它们被更改时才重新编译(每个系统的已编译文件的自己的副本?),那将是很好的。