Ein Makefile-Skript für Linux verstehen

311
vport

Ich verwende fpgalink fx2, um auf einem Windows-Rechner zu bauen. Hier ist Makefile, was folgendes Skript bedeutet:

BRANCH := $(shell TRY=$(CURDIR) BRANCH=dev while [ "$$" != "$(ROOT)" -a "$$" != "/" ]; do if [ -e "$$/.branch" ]; then BRANCH=$$(cat "$$/.branch")  break fi TRY=$$(dirname $$) done echo $$) 
2
Warum das Downvote ??? Ich habe es wieder gutgemacht. MariusMatutiae vor 7 Jahren 1

1 Antwort auf die Frage

1
Kusalananda

Dieses GNU-Makefile-Fragment setzt den Wert der BRANCHMakefile-Variablen.

Dies geschieht durch Aufrufen eines kurzen Shell-Skripts, das im Makefile inline codiert ist.

Das Shell-Skript versucht, eine Datei zu finden, die .branchim aktuellen Verzeichnis aufgerufen wird . Wenn diese Datei nicht gefunden wird, versucht sie, sie im obigen Verzeichnis zu finden, usw., bis sie entweder das Stammverzeichnis ( /) oder das durch den Wert der Variablen Makefile angegebene Verzeichnis erreicht ROOT.

Falls die Datei gefunden wird, wird der Inhalt der Datei zum Festlegen des Werts von verwendet BRANCH(und die Schleife wird beendet). Wenn keine .branchDatei gefunden wird, wird die BRANCHVariable auf den Wert gesetzt dev.