2016-04-04 20 views
0

各ファイルのコンパイル後にいくつかのログファイルが生成されます。SCons Ignore機能が動作しない

私はSConsに、そのファイルをコンパイルするために使用しているビルダーに添付されたエミッタを使用してこれらのファイルを認識させます。

残念ながら、各ビルド後に空のログファイルが削除されるため、SConsはログファイルが存在しないためソースファイルを再コンパイルします。

SCons Ignore機能を使用して、これらの「副作用」ファイルを無視したいと思います。私のエミッタに

私はこのような何かをしています:注意点として、私はいつも私のビルダーに一つだけのファイルを渡す

def compiler_emitter(target, source, env): 
target.append(env.File(source[0].name.split('.')[0] + env['ERRSUFFIX']))  
env.Ignore(source[0], target[1])  
return target, source 

私の場合、無視機能は機能していません。

「SCons方法」でこの問題を解決する最良の方法は何ですか?

+0

私は、あなたが最初にあなたのエミッタに追加のログ/エラーファイルを追加する理由を理解するが、その後、それらを「無視」する必要はありません。あなたのビルドに重要でない場合は、エミッタにそれらについて教えてください。それは少なくとも私のアプローチだろう... – dirkbaechle

答えて

1

env.SideEffectを(使用してみてください)の代わりに無視の:

SideEffect(side_effect、ターゲット)、env.SideEffect(side_effect、ターゲット)

は、建物の副作用としてside_effectを宣言しますターゲット。 side_effectとtargetには、リスト、ファイル名、またはノードを指定できます。面 は、 の他のターゲットを構築する副作用として作成または更新されるターゲットファイルです。たとえば、Windows PDBファイルは、 という静的ライブラリ用の.objファイルを作成する副作用として作成され、さまざまなTeX コマンドの副作用として更新された さまざまなログファイルが作成されます。ターゲットが複数のビルドコマンドの副作用である場合、 sconsは一度に1セットのコマンドしか実行されないようにします。 したがって、複数のビルドコマンドの結果として作成された副作用ターゲット に対してのみ、この方法を使用する必要があります。

ターゲットを-cオプションで削除すると、複数のビルドコマンドが同じ副作用ファイルを更新する可能性があるため、デフォルトでは side_effectターゲットは自動的に削除されません。ただし、 side_effectは、ディレクトリが存在する のディレクトリのクリーニングの一部として削除される可能性があります)。 特定のターゲットがクリーニングされるたびにside_effectがきれいになるようにするには、この を明示的に指定する必要があります。 Cleanまたはenv.Clean関数。

http://scons.org/doc/production/HTML/scons-man.html

関連する問題