使用 OpenCl 和 OpenGl 编写项目,部分代码取决于所使用的 GPU 和 OpenCL 驱动程序。这不是很简单,因为类必须以不同的方式定义,因此我不想在不同的文件中使用内联 #+ 和 #- ,这会使代码变得非常困惑,我更愿意将特定于不同体系结构的代码分成不同的目录,例如通过评估 .asd 文件开头的代码来区分硬件,使用它来确定(设置)稍后在 .asd 文件中加载哪些文件(例如,基于在开头评估的例程中的某些谓词或功能集)。
我对理论上的可能性有点迷失和不知所措。有人可以提供建议,这将是一个可行且类似 cl 的解决方案吗?
最佳答案
通过在任何 defsystem 语句之前在 .asd 文件开头执行代码来确定确切的平台并向 *features* 添加合适的关键字来解决此问题。在 defsystem 表单的 :components 部分中,可以通过将“:if-feature <:feature>”添加到相应的 (:file ...) 表单来指定应加载的特定文件。尽管可能有更合适的方法来完成此任务:cl 规则!
关于common-lisp - 通用 Lisp : defsystem howto set files to load depending on predicate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73570357/