我有一个scons项目,在子目录中有许多SConscript文件。在其中一个SConscript文件中,我想检查构建主机上是否安装了特定的库。这是代码片段:
Import("env")
conf = Configure(env)
if conf.CheckLibWithHeader(...):
doSomething()
env.Library(...)
当我执行build scons失败并出现strnge错误时没有错误消息,如下所示:
scons: ***
File "/path/to/SConscript", line 3, in <module>
第3行是我调用Configure()的地方。我想我正在做一些不允许使用Configure()函数但我在scons文档中找不到任何解释。
请帮我调试一下。
答案 0 :(得分:0)
所以问题出现在一个兄弟SConscript文件中。已拨打Configure(env)
,但配置对象未通过conf.Finish()
电话处理。
这是一个问题,因为SCons不允许随时创建多个配置对象。我通过分析SCons来源找到了这个规则 - 我不知道这是否有记录。
因此,当我调用Configure(env)
时,SCons抛出一个异常,因为它看到另一个活动的配置对象是由兄弟SConscript孤立的。