Вы можете получить имя обрабатываемого в данный момент make-файла из встроенной переменной MAKEFILE_LIST
.
Учитывая, что текущий make-файл является последним , который был включен (другими словами, вы не использовали другую директиву include
с начала текущего скрипта), путь к скрипту само по себе будет:
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
Теперь вы можете включить сценарий в тот же каталог, что и (обратите внимание на отсутствие косой черты, он уже был добавлен $(dir ...)
):
include $(SELF_DIR)another.mk
Примечание: в GNU Make 3.80 не было встроенной функции lastword
. В этом случае вы можете реализовать его следующим образом, заменив $(lastword ...)
на $(call lastword,...)
:
lastword = $(if $(firstword $1),$(word $(words $1),$1))