2016-06-14 11 views
0

サブスコープに多数のSConscriptファイルがあるsconsプロジェクトがあります。これらのSConscriptファイルの1つでは、特定のライブラリがビルドホストにインストールされているかどうかをチェックしたいと思います。ここでは、コードスニペットは次のとおりです。SCons:SConscriptでmisterious Configure()が失敗する

Import("env") 

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

env.Library(...) 

私はsconsのを構築し実行する。このようなエラーメッセージなしでstrngeのエラーで失敗します。

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

3行目は、私が設定(呼び出し場合)されます。私はConfigure()関数で許可されていない何かをやっていると思いますが、sconsのドキュメントでは何の説明も見つけられません。

これをデバッグするのを手伝ってください。

+0

最初にやりたいことは、例とエラーの説明から副作用を除外することです。つまり、SConscriptだけを実行しようとすると、他のすべての場所で 'SConscript'の呼び出しをコメントアウトするだけです。これでも前述のエラーが表示された場合は、 'env'の設定を、トップレベルのビルドファイルの単純な' env = Environment'に置き換えてください。エラーがまだ表示された場合は、トップレベルのSConstructと呼び出されたSConscriptをここに投稿してください。そこから取得できます。 – dirkbaechle

+0

config.logはありますか?その場合は内容を投稿してください – bdbaddog

+0

私はこの問題の解決方法を持っています。数時間後にここに掲載します。 (config.logには関連情報はありません)。 –

答えて

0

この問題は、兄弟SConscriptファイルの1つにありました。 Configure(env)への呼び出しがありましたが、設定オブジェクトはconf.Finish()コールで廃棄されませんでした。

SConsでは、いつでも複数の設定オブジェクトを作成することができないため、これは問題でした。 SConsソースを分析してこのルールを見つけました。これが文書化されているかどうかはわかりません。

したがって、私がConfigure(env)に電話をしたとき、SConscriptの兄弟によって孤立した別のアクティブな構成オブジェクトがあることがわかったので、SConsは例外をスローしました。

関連する問題