Äquivalent von „berühren“ in scons?
Frage
scons verwendet MD5-Hashes anstatt mod mal-Datei, um zu bestimmen, ob eine Abhängigkeit gebaut werden muss.
Ich mag dies das Standardverhalten sein. Aber gibt es eine Möglichkeit, es zu zwingen, eine bestimmte Datei nicht mehr aktuell anzunehmen ist (das Äquivalent von „touch“), neben der Bearbeitung der Datei, um es anders zu machen?
Bearbeiten Anwendungsfall:
Binärdatei F wird verwendet, eine andere Datei G mit einem Werkzeug X. Aus irgendeinem Grund-Datei erstellen G geändert hat (es wurde beschädigt, oder ich bearbeitet es) oder Werkzeug X hat sich geändert, und ich möchte Datei G und alles neu nachgeschaltet ist.
Bearbeiten Dies ist nur für den gelegentlichen Gebrauch. Ich will nicht, dies immer nur die paar Male passiert, wenn ich danach fragen. Ich kann auch nicht wissen, die bestimmte Datei vor der Zeit. Aus diesem Grund möchte ich nicht die SConscript / SConstruct Dateien ändern, um eine bestimmte Datei zu erstellen. Was ich möchte, ist dies an einer Eingabeaufforderung zu tun:
scons {something to specify file foobar.h}
und das würde scons zwingen, alle Dateien zu bauen foobar.h abhängig, während nur die Eingabe scons
den regulären Build tun würde, mit MD5 für Abhängigkeitsprüfung Hashes. Ich kümmere mich nicht Bearbeitung der SConscript / SConstruct Dateien vor der Zeit dieses zu ermöglichen (custom Decider, glaube ich), wenn es eine Möglichkeit, dies zu tun, dass nicht wesentlich erhöht die Bauzeiten.
Lösung
Haben Sie einen einen Blick auf die --interactive Möglichkeit Scons hatte, dort können Sie reinigen und spezifische Ziele bauen.
Andere Tipps
Ich glaube nicht, gibt es eine Möglichkeit, das zu tun direkt ist. Wenn die Quelldatei in Frage, die man offensichtlich Ausgang hat, wie test.o
von test.c
erstellt, dann Entfernen test.o
würde eine erneute Kompilierung der Quelldatei erzwingen.
Wenn Sie stattdessen berühren test.h
will, die aus mehreren verschiedenen Quelldateien enthalten ist, können Sie ein sauber Ihr gesamten Projekt besser dran tun, um sicherzustellen, dass alles wieder aufgebaut wird.
In Ihrer SConstruct Datei, um den Knoten extrahieren, die Ihre Datei darstellt. Danach sollten Sie in der Lage sein, die Node.always_build (true) verwenden , um sicherzustellen, dass es gebaut wird, ich denke, das seine Familienangehörigen auch wieder aufgebaut werden zwingen wird.