Für Ihre Bequemlichkeit, wenn GNU beginnt machen (nachdem er alle -C Optionen verarbeitet hat) :
THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
THIS_MAKEFILE:=$(notdir $(THIS_MAKEFILE_PATH))
all:
@echo "This makefile is $(THIS_MAKEFILE) in the $(THIS_DIR) directory"
Welche
$ make -f ../M
This makefile is M in the /home/sandipb directory
Ref gibt Es setzt die Variable CURDIR auf den Pfadnamen des aktuellen Arbeitsverzeichnisses. Dieser Wert wird nie wieder von make berührt: Beachten Sie insbesondere, dass der Wert von CURDIR sich nicht ändert, wenn Sie Dateien aus anderen Verzeichnissen einschließen. Der Wert hat dieselbe Priorität, die er hätte, wenn er im Makefile festgelegt wäre (standardmäßig wird eine Umgebungsvariable CURDIR diesen Wert nicht überschreiben). Beachten Sie, dass das Setzen dieser Variablen keinen Einfluss auf die Operation make hat (make veranlasst z. B. nicht, dass das Arbeitsverzeichnis geändert wird).
alle: echo $ (CURDIR)
hängt wirklich von OS und 'make' Sie verwenden (Linux GNU machen?) – reinierpost