【发布时间】:2018-01-25 13:37:49
【问题描述】:
我真正想要的是源内测试定义:
假设我有一个 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 中有1-tests-stubs,而simple-system-tests 中有1-tests-real。
在1-tests-stubs 中,我定义了一个宏(defmacro def-test (&rest _args) nil),它在1-tests-real 中获得了一个“真正的”实现。
现在我想编译 simple-system 和 (declare (optimize (safety 0) (debug 0) (speed 3))) 和 simple-system-tests 和相反的 (declare (optimize (safety 3) (debug 3) (speed 0)))。
我该怎么做(在哪里放置以及如何以通用方式为这两个系统设置这些声明)?
如何在simple-system-tests 中重用simple-system 的定义(而不是重复自己重新键入所有模块/组件)?
而且我必须确保所有文件都针对每个系统使用不同的优化级别重新编译。
另外,如果每个系统文件只有在它们被更改时才会重新编译(每个系统的编译文件的自己的副本?)。
【问题讨论】:
标签: optimization common-lisp asdf