2016-10-03 4 views
0

sconsはソースファイルを再コンパイルする必要があるかどうかを判断するためにMD5シグネチャをデフォルトの判定子として使用すると言われています。例えば。私は以下のようにSConstructを持っている:.cファイルのコメントを変更するとき、スコーンはまだそれを再コンパイルしますか?

Library('o.c') 

そして、私のo.cは次のとおりです。

$ cat o.c 
    /*commented*/ 
    #include<stdio.h> 
    int f(){ 
     printf("hello\n"); 
     return 2; 
    } 

実行sconsのをとコメント行を削除し、再度、sconsのを実行します。私はSConsは、再びそれをコンパイルしないことを期待していますが、実際にはそれがあります:

Decider('MD5'). 

それでも同じ結果:

gcc -o o.o -c o.c 
scons: done building targets. 

私は1つの行を追加するSConstructファイルを変更した場合。

私の質問は:sconsの場合、ソースファイルのコメントを変更すると再構築されないことを確認する方法ですか?

ありがとうございます!

答えて

5

あなたが正しく述べたように、SConsはソースファイルのMD5ハッシュを使用して、変更されたかどうか(コンテンツベース)、ターゲットの再構築が必要と思われる(その依存関係の1つが変更された) 。 コメントを追加または変更すると、ファイルのMD5合計が変更され、トリガーが起動します。

この動作が気に入らない場合は、独自のDecider関数を記述して使用することができます。これにより、好みのコメント変更は省略されます。これがどのように実行されるのかについては、「6.1.4独自のCustom Decider関数の記述」(UserGuide)を参照してください。

関連する問題