0

SConsプロジェクトを次のように設定しています。

Project/
    SConstruct  # "SConscript('stuff/SConscript', variant_dir = 'build')
    stuff/
        SConscript # "import configuration"
        configuration/
            __init__.py
            Thing.py

ビルド時に、SConscriptはビルドディレクトリにコピーされますが、「構成」モジュールはコピーされません。通常、Depends()関数(eg Depends(program, object_files))を使用してファイルの依存関係を表現します。ただし、この場合、SConscriptファイル自体が依存関係の「ターゲット」です。

これをSConscriptでどのように表現しますか?

4

2 に答える 2

1

2つの回避策があります。SConscriptで依存関係を表現していないため、これらを回避策と呼びます。

  1. SConstructから「構成のインポート」を実行します(sys.pathを編集する必要があります)

  2. stuff / SConscriptで、ソースディレクトリをsys.pathに追加します。

    
    import sys
    sys.path += ['%s/stuff' % (Dir('#').abspath)]

    import configuration
于 2009-12-17T01:32:38.707 に答える
0

まず、SConsスクリプトのソースファイルに本当に依存する必要がありますか?それらはどのくらいの頻度で変更されますか。また、変更された場合、ユーザーがSConscript.py構成ファイルをいじくり回した場合に、ユーザーにクリーンビルドを要求するのは非常に面倒です。

これが必要な場合、現在これは表示されていませんか?SConsは、SConscript.pyファイルが変更されたかどうかとその方法を知るのにかなり優れていることがわかりました。具体的には、カスタムpython関数を使用するユーザー定義のビルダーactionがある場合はどうなりますか?無数のプロプライエタリEDAツールを呼び出す多数のユーザー定義Python関数を含むEDAビルドフローの場合、ファイルを変更する SConstruct.pyと、カスタムpythonビルダーのすべての結果が無効であると見なされます(多くの場合、残念ですが) 。参考までに、リリース1.2.0.d20090223を使用しています。

于 2009-12-17T14:08:09.110 に答える