2016-12-02 21 views
-1

この例では、foo.cにはfoo.hが含まれています。 foo.hが変更された場合、foo.cはfoo.oに再構築されますが、libfoobar.aは再構築されません。SConsヘッダーの変更後にStaticLibraryが再構築されない

Import('env') 

penv = env.Clone() 
penv.Append(CPPPATH=['./']) 

penv.StaticLibrary('foobar',[ 
     'foo.c', 
     'bar.c', 
    ], 
) 

ヒント

+1

再構築されていないことをどのように知っていますか?ヘッダーファイルの変更は何ですか?再構築されたオブジェクトファイルが変更されなかった場合(md5)、アーカイブを再構築する必要はありません。 –

+0

ああそう!あなたが正しいです!依存関係が合計で処理されたことを知らなかった!それはいいですね、ありがとう!あなたが適切な答えを見つけたら、自由に感じてください。 –

+0

ダウン投票者は彼の考えを分かち合いませんか? –

答えて

1

SConsでは、デシリアは、ターゲットを再構築する必要があるかどうかを決定するものです。デフォルトの決定子はMD5です。つまり、オブジェクトファイルが再構築されても、そのMD5が変更されない場合、そのオブジェクトに対する/リンクを含むものは再構築する必要がありません。これは、ファイルシステムのタイムスタンプを使ってターゲットをリビルドするかどうかを決定するMakeとは対照的です。

したがって、ヘッダーファイルの変更が空白だった場合、または依存性が低い場合は、依存関係ツリーのオブジェクトファイルの上に何も再構築する必要はありません。

関連する問題