Make-Dateiwie verlassen und die Daten in der Datei zur gleichen Zeit in Make-Datei protokolliert, wenn Fehler
RUN_EXE = xyz.exe
SOME_DIR_PATH = ../folder1/
ifdef $(MAKECMDGOALS)
ifeq ($(MAKECMDGOALS), "target_1")
ABC = status.log
ARGS_TO_EXE = "argc1"
endif
ifeq ($(MAKECMDGOALS), "target_1")
ABC = file2.txt
ARGS_TO_EXE = "argc2"
endif
else
ABC = status.log file2.txt
ARGS_TO_EXE = ""
endif
# phony define
.PHONY = default target_1 target_2
# if target not mention run default
default: $(ABC)
target_1 target_2:$(ABC)
$(ABC):
$(CD) $(SOME_DIR_PATH) && ($(RUN_EXE) $(ARGS_TO_EXE) || (exit 1;)) 2>&1 | tee -a ../status.log; \
ich habe zwei Make-Datei tritt das erste Make-Datei mit i dieses Make-Datei am aufrufen. Wenn ein Fehler auftritt, sollte er erfolgreich zum ersten Makefile zurückkehren.
zu Testzwecken Ich habe einen Fehler in der ausführbaren Datei erstellt Ich versuche, eine Datei im Lesemodus zu öffnen, die nicht existiert. so wird meine ausführbare Datei Fehler durch und es kommt heraus
wenn ich
make target_1
Fehler geben: Fehler Öffnen der Datei (c printf-Funktion und gleichen in der Datei sein wird)
make target_2
Fehler : Fehler beim Öffnen der Datei (unter Verwendung der c printf-Funktion und des gleichen wird in der Datei sein)
ABER Problem auftreten hier
make
Fehler: Fehler beim Öffnen der Datei (mit der Funktion c printf und derselben Datei). Fehler: Fehler beim Öffnen der Datei (unter Verwendung der c printf-Funktion und derselben Datei).
Es sollte nach dem ersten Drucken mit der erfolgreichen Anmeldung in status.log Datei beendet werden, aber es ist nicht passiert. AS $ (ABC) enthalten zwei Ziel-status.log und file2.txt, so dass beim ersten Start versucht wird, status.log zu erstellen und in der zweiten Datei, file2.txt zu erstellen.
Aber ich möchte, wenn Fehler in ersten Lauf gibt es zum ersten Make-Datei zurückkehren sollte und den Fehler in status.log log auch und sollte für file2.txt und kommen mit Ausfahrt 1
Rezept ändert sich nicht für mich nur Argumente ausführbare Datei ändert sich. Deshalb möchte ich bei einem einzigen Rezept bleiben. Ich habe Ihr Rezept versucht, aber es wird nicht den Fehler in Datei umgeleitet. –
@RohanG Verwenden Sie '| &' Umleitung in 'Tee' anstatt' '', um sowohl stdout als auch stderr umzuleiten. –