3

私のプロジェクトの依存構造は次のとおりです。

単一のファイル F があり、そこからファイル A、B、および C が派生します。プロジェクトの他のすべては、最終的に A、B、または C に依存します。

A、B、および C は、次のようなカスタム Builder でビルドされます。

ABCbuilder = Builder(action = build_abc)
env = Environment(BUILDERS = {'abc' : ABCbuilder,...}
env.abc([A,B,C],[F])

問題は、F が扱いにくいことです。これをディストリビューションに含めず、A、B、および C のみを含めるオプションが必要です。

Fなしで存在する場合、SConsがA、B、およびCを開始ソースとして受け入れるようにするにはどうすればよいですか? 現在、A、B、および C を F を含まない新しいディレクトリにコピーすると、それらを再構築しようとします。

マニュアルのセクション6.7を見てきました。依存関係の無視: Ignore Functionですが、それを自分のコードに適用する方法がわかりません。

4

2 に答える 2

4

Ignore() 関数の詳細については、SCons のマニュアル ページを参照してください。マニュアルページによる署名は次のとおりです。

Ignore(target, dependency)
env.Ignore(target, dependency)

次のことができるはずです。

# assuming aTarget, bTarget, cTarget, and F are set accordingly

Ignore(aTarget, F)
Ignore(bTarget, F)
Ignore(cTarget, F)

SCons でコマンド ライン オプションを処理するには、いくつかの方法があります。概要は次のとおりです。

最も簡単な方法はthisです。これにより、次のことが可能になります。

useF = ARGUMENTS.get('includeF', 0)
if not int(useF):
    Ignore(aTarget, F)
    Ignore(bTarget, F)
    Ignore(cTarget, F)

コマンドラインは次のようになります。

#scons includeF=1
于 2013-11-05T16:08:13.330 に答える