SCons:SConscript 中神秘的 Configure() 失败

SCons: misterious Configure() failure in SConscript

我有一个 scons 项目,子目录中有许多 SConscript 文件。在其中一个 SConscript 文件中,我想检查构建主机上是否安装了特定的库。这是代码片段:

Import("env")

conf = Configure(env)
if conf.CheckLibWithHeader(...):
    doSomething()

env.Library(...)

当我执行构建 scons 时失败并出现 strnge 错误,没有这样的错误消息:

scons: *** 
File "/path/to/SConscript", line 3, in <module>

第 3 行是我调用 Configure() 的地方。我想我正在做 Configure() 函数不允许的事情,但我在 scons 文档中找不到任何解释。

请帮我调试一下。

所以问题出在其中一个同级 SConscript 文件中。调用了 Configure(env),但配置对象未通过调用 conf.Finish() 处理。

这是一个问题,因为 SCons 不允许在任何时候创建多个配置对象。我通过分析 SCons 来源发现了这个规则 - 我不知道这是否被记录在案。

因此,当我调用 Configure(env) SCons 时抛出一个异常,因为它发现有另一个活动的配置对象被同级 SConscript 孤立。