Hallo, für meine Entwicklungsumgebung habe ich mir ein eigenes Makefilegeschrieben. Nun ist es bei mir so, dass alle compiliert wird, wenn auch ein Fehler auftaucht. Es sollte so sein, das sobald ein Fehler erscheint der make Prozess abgebrochen werden soll. Wie kann man das im Makefile realisieren ? Danke im Voraus.
Neuling schrieb: > Es sollte so sein, das sobald ein Fehler > erscheint der make Prozess abgebrochen werden soll Normalerweise wird abgebrochen, aber es könnte sein, dass das Programm, das den Fehler erzeugt, keinen Fehlercode zurückliefert. Rufst Du das make mit der -i Option auf? Zeig einmal dein Makefile und gib ein bischen mehr Details.
Neuling schrieb: > Hallo, > > für meine Entwicklungsumgebung habe ich mir ein eigenes > Makefilegeschrieben. Nun ist es bei mir so, dass alle compiliert wird, > wenn auch ein Fehler auftaucht. Es sollte so sein, das sobald ein Fehler > erscheint der make Prozess abgebrochen werden soll. Wie kann man das im > Makefile realisieren ? Manche Versionen von make kennen den Paramter -S (achte auf die Großschreibung), der den Abbruch des Makelaufes beim Auftreten des ersten Fehlers erzwingen soll. Das Setzen dieser Option mag in manchen Fällen helfen.
Danke für die Hilfe. Ich verwende mingw32-make.exe. Wo müsste ich diese Option hinzufügen?
Neuling schrieb: > Wo müsste ich diese Option hinzufügen? Anstelle von "make ..." sollte es "make -S ...." heissen, und zwar überall, wo "make" steht oder "make" eingetastet wird.
Die Option -S hat keine Auswirkung:
Aufruf von MingW32:
>>c:\MinGW\V440\bin\mingw32-make.exe -S
Neuling schrieb: > Wie kann man das im > Makefile realisieren ? Indem man im Makefile den Compiler nicht nur einmal mit allen Sourcefiles aufruft, sondern mehrmals mit nur jeweils einem Sourcefile.
Neuling schrieb: > Die Option -S hat keine Auswirkung Bei mingw32-make soll es sich laut www.mingw.org um das make von GNU handeln. Laut www.gnu.org/software/make/manual/ kennt GNU make natürlich die Option -S. Auf der Seite mingw.org habe ich keine Aussage gefunden, ob die Option in die Windowsvariante übernommen wurde. Allerdings steht das zu vermuten. Dass in Deinem Fall "make -S Makefile" ohne Abbruch durchläuft, sollte bedeuten, dass keines der von make aufgerufenen und/oder im Makefile definierten Programme einen Fehler zurückmeldet. Dass wundert nicht. Viele Compiler/Übersetzer arbeiten nach dem Auftreten eines Fehlers an der nächsten Stelle im Programmtext weiter, an der sie es können. (No bug, that's a feature.) Das läßt sich gegenprüfen, indem im Makefile einer der Programmaufrufe so geändert wird, der er mit Sicherheit einen schweren Fehler auslöst. Sollte make in diesem Fall durchlaufen, bleiben folgende Möglichkeiten: (1) Eventuell können die aufgerufenen Programme mit Parametern so ausgestattet werden, dass sie beim ersten Fehler stoppen. (2) Falls nicht, kann man versuchen, andere Alternativen für die Conmpiler/Übersetzer zu finden, welche dieses Verhalten möglich machen. (3) Andere Varianten von make einsetzen. Mir fehlt allerdings der Glaube, dass es ein geeigneteres make als das Gnu make gibt.
pv schrieb: > Dass in Deinem Fall "make -S Makefile" ohne Abbruch durchläuft, > ... Hast du überhaupt mal einen Blick in das Makefile geworfen? Wie soll make auch nur irgendeine Chance haben irgendwas zu unterbrechen, wenn es überhaupt nur einen einzigen Compileraufruf gibt, bei dem gleich alle Souce-Files als Argument übergeben werden? Es gibt auch keinen Ablauf der Form "erst Compilieren, wenn kein Fehler, dann Linken, wenn kein Fehler, ...". In diesem Makefile gibt es schlicht nichts abzubrechen für make.
Mich wundert es übrigens, dass es überhaupt durchläuft. Das erste Target ist 1_compiler. Nach dem Compilieren sollte es aufhören.
Klaus Falser schrieb: > Mich wundert es übrigens, dass es überhaupt durchläuft. Es gibt in diesem Makefile kein "Durchlaufen". Der OP ruft die einzelnen Schritte offenbar händisch auf.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.