Wenn Sie make all --print-data-base
tun, um zu bestimmen, können Sie diese Art von Ausgabe zu erhalten, nachdem eine bestimmte Make-Datei ausgeführt wird ausgeführt wird:GNU machen - wie Namen + Pfad der Make-Datei von --print-Datenbasis Ausgabe
...
# default
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
# default
OUTPUT_OPTION = -o [email protected]
# environment
QT_INSTALL_PLUGINS = C:/Users/mureadr/Desktop/A/HMI_FORGF/qt5binaries/plugins
# default
COMPILE.cpp = $(COMPILE.cc)
# environment
PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
# makefile (from 'Makefile', line 1)
MAKEFILE_LIST := C:/Users/mureadr/Desktop/A/ImpTarget.mk Makefile
# environment
TMP = C:/Temp
...
Das aktuelle Verzeichnis ist einfach gleich CURDIR
- nicht gezeigt - aber der Name von Makefile ist nicht so einfach.
Mit Blick auf 6.14 Other Special Variables: MAKEFILE_LIST, es scheint die Antwort ist: Blick auf den ersten Eintrag von MAKEFILE_LIST
und das ist der Name des Makefile. Wenn Sie jedoch ein Makefile an make
über make all --print-data-base MAKEFILES=MyMake.mk
übergeben, wird der erste Eintrag MyMake.mk
sein.
Daher scheint die Regel zu sein: Blick auf der Variable -*-command-variables-*-
und bestimmen, ob eine Make-Datei in geben wurde Wenn ja, diskontieren sie von den variablen MAKEFILE_LIST
und der ersten Saite von den übrigen Einträgen ist der Name des Makefiles. .
FRAG
Gibt es noch andere 'gotchas', die etwas in var MAKEFILE_LIST
vor der echten Make-Datei einfügen würde?
Die kurze Antwort ist, dass 'MAKEFILE_LIST' eine durch Leerzeichen getrennte Liste von Dateinamen enthält, die von den Makefiles analysiert werden, in der Reihenfolge, in der sie geparst werden. Jede Funktion, die bewirkt, dass Makefiles analysiert werden, ändert diese Liste. Dazu gehören die 'MAKEFILES' -Variable, die Namen, die der Option' -f' in der Befehlszeile zur Verfügung gestellt werden, die Namen, die für '-f'-Optionen bereitgestellt werden, die in den Variablen' MAKEFLAGS' oder 'GNUMAKEFLAGS' vorkommen 'Direktiven. Das ist alles, was ich mir aus dem Kopf denken kann. – MadScientist
@MadScientist aus der Ausgabe von 'make' ist es möglich zu schließen, ob Makefile mit' MAKEFILES = '? Das ist alles was ich wirklich brauche. – Adrian
Sie meinen, von der Ausgabe von 'make -p'? Warum prüfen Sie nicht einfach den Inhalt der ausgedruckten 'MAKEFILES'-Variable? – MadScientist