Hallo lug-ddler!

Ich möchte von einem Make-Durchlauf ein komplettes Logfile anlegen lassen.
Um die Auswirkung von Parametern vergleichen zu können, soll bei jedem 
Durchlauf ein neues Logfile angelegt werden.
Dazu wird mit date eine Zeichenkette gebildet, die dem Dateinamen des Logfiles 
angehangen wird.
Allerdings beißen sich Logfile und make noch ein bißchen:


Variante 1 (Die Prozesse legen einzelne reports an, die ungefähr der 
Bildschirmausgabe entsprechen.) 

--Makefile-- 
DATE = $(shell date +"%Y-%m-%d__%H_%M") 
export LOGFILE := logfile_$(DATE).txt 

all: module_B 

module.A: 
        process_A 
        cat process_A.report > $(LOGFILE) 

module.B: module.A 
        process_B 
        cat process_B.report >> $(LOGFILE) 
--end-- 

Problem: Im Fehlerfall wird cat nicht mehr aufgerufen und das Logfile ist 
unvollständig; es enthält nur die reports von den erfolgreichen Prozessen 


Variante 2 

--Makefile-- 
DATE = $(shell date +"%Y-%m-%d__%H_%M") 
export LOGFILE := logfile_$(DATE).txt 

all: module_B 

module.A: 
        process_A | tee $(LOGFILE) 

module.B: module.A 
        process_B | tee --append $(LOGFILE) 
--end-- 

Auch hier ist der Fehlerfall das Problem, da tee den Fehler "abfängt" bzw. 
maskiert. Damit läuft make trotz Fehler weiter.


(Variante 3) 
make TARGET | tee LOGFILE 

Das ist keine (bequeme) Lösung, da bei jedem Start der Dateinamen manuell 
eingegeben werden müßte. 


(Variante 4) 
Ein Skript welches make entsprechend startet (wie in Variante 3) empfinde ich 
als unelegant. 
Da geht der Vorteil verloren alle targets in einem Makefile zu haben.

Vielleicht hat ja von Euch jemand eine Idee oder einen Vorschlag, wie sich das 
Ganze mit make-Bordmitteln elegant lösen lässt.

Grüße
Bert

P.S.: Das eigentliche Makefile besteht aus mehr als zwei Prozessen und läuft 
unter cygwin auf Win7.


_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an