首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASDF系统配置变量?

ASDF系统配置变量?
EN

Stack Overflow用户
提问于 2015-04-09 12:02:45
回答 2查看 169关注 0票数 1

是否有一种方法可以使可配置的ASDF系统根据用户配置变量加载不同的lisp文件?最好的情况是,如果没有提供所需的配置变量,则加载过程将失败,并带有清晰的错误消息。在加载系统时,如何方便地设置这些变量?(手动,通过quicklisp,或从另一个系统定义文件)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-10 16:04:20

请不要在defsystem表单中使用#+和#-,而是:if-feature。

另外,执行运行时差异化或者根据特性有一个完全不同的系统目标要好得多,而不是有一个目标以构建系统看不到的不负责的方式改变它的含义。

票数 2
EN

Stack Overflow用户

发布于 2015-04-10 05:21:31

不是从盒子里拿出来,但你可以安排一些类似的东西。更改系统加载的文件的最简单方法是结合使用#+/-和*features*

添加功能的一种方法是在.sbclrc (或您的实现启动文件)中添加功能,如果您想要更具体的项目,您可以定义一个执行:在您的系统上加载一个函数来调用将读取文件的函数之前,它可以修改*features*,以便读取不同的组件。我使用此方案加载配置文件的变量。

所以如果我的系统是foo

代码语言:javascript
复制
(defsystem #:foo
  ...
  :dependencies (#:foo-config)
 ...)

(defmethod perform :after ((op load-op)
                           (system (eql (find-system :foo-config))))
  (asdf/package:symbol-call :foo/config-loader 'load-config
                            (system-relative-pathname :foo-config
                                                      #P"foo.config")))

因为#+/-在读取时工作,我猜它不会工作,因为在读取系统定义之后,这些特性会被修改。解决这一问题的一种方法是只需要配置系统,并在设置了特性之后,使后置方法要求系统。

我的2c。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29537981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档