2016-10-03 2 views
0

Es wird gesagt, dass Scons die MD5-Signatur als Standard-Entscheider verwendet, um zu bestimmen, ob eine Quelldatei erneut kompiliert werden muss. Z.B. Ich habe SConstruct bekam wie folgt:Wenn Sie den Kommentar einer .c-Datei ändern, kompilieren scons ihn noch?

Library('o.c') 

Und mein O.C ist:

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

Run scons und entfernen Sie die Kommentarzeile, führen scons wieder. Ich erwarte, dass scons sollte es nicht wieder kompilieren, aber es ist eigentlich:

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

Wenn ich SConstruct Datei ändere eine Zeile hinzufügen:

Decider('MD5'). 

Noch gleiches Ergebnis.

Meine Frage ist: Wie stellt man sicher, dass für Scons, wenn Quellcode Kommentare geändert werden, sie nicht neu gebaut werden?

Danke!

Antwort

5

Wie Sie richtig angegeben haben, verwendet SCons die MD5-Hashsumme einer Quelldatei, um zu entscheiden, ob sie geändert wurde oder nicht (inhaltsbasiert) und eine Neuerstellung des Ziels erforderlich ist (da sich eine der Abhängigkeiten geändert hat). . Durch Hinzufügen oder Ändern eines Kommentars ändert sich die MD5-Summe der Datei ..., so dass der Auslöser ausgelöst wird.

Wenn Sie dieses Verhalten nicht mögen, können Sie Ihre eigene Decider-Funktion schreiben und verwenden, die Kommentaränderungen nach Ihren Wünschen auslässt. Bitte überprüfen Sie Abschnitt 6.1.4 "Ihre eigene benutzerdefinierte Entscheider-Funktion schreiben" in der UserGuide, um zu sehen, wie dies gemacht werden kann.

Verwandte Themen