gcc - 在更改. c 文件的註釋時,scons仍然是編譯的?

  显示原文与译文双语对照的内容
133 2

據說,scons使用MD5簽名作為默認決定,以確定源文件是否需要編譯。比如 如下所示:

Library('o.c')

我的o.c 是:

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

運行scons並刪除註釋行,再次運行 scons 。我希望不應該再編譯它,但實際上它是:

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

如果更改SConstruct文件以添加一行:

Decider('MD5').

還是同樣的結果。

我的問題是:如何確保在更改源文件註釋時,它們不會得到重新構建。

謝謝!

时间:原作者:0个回答

56 2

正如你正確說明的,voiceover使用源文件的MD5 hashsum來決定它是否已經經更改或者不是( 基於內容) 。添加或者更改註釋時,文件的MD5和會發生更改。這樣觸發器就會觸發。

如果你不喜歡這種行為,你可以編寫並使用自己的決定函數,這將忽略對你的likings的註釋更改。請檢查 UserGuide 中的6.1.4"編寫自己的自定義決定函數",看看它是如何完成的。

原作者:
...