2

Sconstructファイル自体が変更されたときにsconsにすべてのターゲットを強制的にビルドさせる方法はありますか?

(ビルド設定を変更した場合、以前にビルドされたファイルが新しいビルド設定と一致することを信頼できないためです)

4

1 に答える 1

3

SConstruct をターゲットの 1 つの依存関係として追加する必要がある場合は、間違っているか、SCons にバグがあります。

たとえば、コンパイル フラグについて話しているとします。-O0 から -O2 に変更したいとします。最も単純なケースでは、次のようになります。

env = Environment(CCFLAGS = '-O0')
env.Program(target = 'foo', source = 'foo.c')

scons を実行すると、foo.c が foo.o にコンパイルされ、そこから foo(.exe) が作成されます。そして、これを次のように変更すると:

env = Environment(CCFLAGS = '-O2')
env.Program(target = 'foo', source = 'foo.c')

次に、scons は、env で定義されているすべてのターゲットを再構築します。これは、コマンド ラインがターゲットの暗黙的な依存関係であるためです。したがって、CCFLAGS を変更すると、依存関係の値が変更され、"foo" ターゲットが再構築されます。

おそらく、あなたの本当の質問は、「コマンド ライン オプションを変更したにもかかわらず、scons がターゲットを再構築しないのはなぜですか?」のようなものです。いずれにせよ、人為的な依存関係を追加して再構築を強制するのではなく、実際の依存関係の観点から考える必要があるかもしれません。

于 2009-09-17T12:42:29.907 に答える