make... target .AFTER?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

make... target .AFTER?

Beitrag von MrScoville » 04.06.2017 18:47:48

Hallo,

ich würde gerne in einem Makefile eine "Erfolgs-Meldung" einbauen, die aber nur dann angezeigt wird, wenn wirklich alles erfolgreich gebaut wurde. Irgendwo habe ich mal aufgeschnappt, dass es da eine Regel ".AFTER" geben soll, aber die gehört wohl zu nmake.

Klar, wenn ich make -j1 vorschreibe, könnte ich mir was Krudes mit touch und so ausdenken, aber da gibt es doch wohl was von den Ratiopharm-Zwillingen?

Also, ich hätte gerne eine Regel, die genau NUR dann ausgeführt wird, wenn alles beim Bauen geklappt hat, schlicht eine "SUCCESS"-Meldung. Gerade, wenn man großes Zeug baut, rauscht das ja auch mal eine halbe Stunde durch die Konsole, zwischendurch mal ein paar Warnings, die man getrost ignorieren kann, wenn man weiß, was man tut.

Help, pretty please?
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

DeletedUserReAsG

Re: make... target .AFTER?

Beitrag von DeletedUserReAsG » 04.06.2017 18:51:37

Im Fehlerfall ist $? ≠ 0

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: make... target .AFTER?

Beitrag von eggy » 04.06.2017 20:59:04

Wie wärs mit nem weiteren Target, das auf das alte depended?

altes makefile:

Code: Alles auswählen

all:
   tu was
neues Makefile:

Code: Alles auswählen

neu: all
    echo "fertig"
all:
    tu was

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: make... target .AFTER?

Beitrag von MrScoville » 08.06.2017 17:23:10

niemand hat geschrieben:Im Fehlerfall ist $? ≠ 0
Danke erstmal. Wenn ich make mit -j4 oder so loslaufen lasse, wo müsste ich $? dann abfragen? Einfach am Ende vom Target? Oder mit dem neuen Target, wie eggy das vorgeschlagen hat?

Also, wenn ich ein Makefile target habe wie
all: part1 part2 part3
kann das jedes Target $? setzen? Oder anders gesagt, angenommen, make entscheidet, alle 3 parts parallel zu bearbeiten, wer setzt dann $? Make selber? D.h. ich würde das dann über die Shell auswerten? Oder komme ich da innerhalb vom Makefile ran? Und wo wird dann $? gesetzt? Wenn part2 und part3 durchlaufen, aber part1 mit Error abbricht, kann ich dann einfach

all: part1 part2 part3
ifeq($?, 0)
echo "Alles super!"
endif

da hin schreiben? (Jo könnte ich das jetzt erstmal ausprobieren, aber wenn es nicht so ist, wäre ich eh wieder da, also frage ich lieber gleich.)

LG
Carsten
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Antworten