获取包含在 Makefile 中的文件的路径

Get path to file that is included into a Makefile

我遇到以下情况:我希望几个独立的 Makefile 包含一个包含所有规则的文件(通过 include ... 指令)。到目前为止,一切都很好。但是,该中央规则文件确实需要使用它旁边的一些其他文件(shell-脚本等)。要命名这些其他文件,它需要知道自己相对于 make 调用的路径。

什么会起作用:

# in the Makefiles
toolsPath := ../../generalStuff
include $(toolsPath)/generalRules.mk

# in the generalRules.mk
foo: ./$(toolsPath)/script
    ./$(toolsPath)/script foo

然而,虽然这可行,但它依赖于包含的 Makefile 诚实地告诉通用文件它自己的路径。我想知道是否有办法避免设置 toolsPath 变量。

是否可以将包含文件中的 $(toolsPath) 替换为依赖于 make 本身的内容,而不是包含的 Makefile?

我希望能够简单地将其写入 Makefiles:

include ../../generalStuff/generalRules.mk

MAKEFILE_LIST 变量(参见 link 中的示例)可用于查找此信息。请确保在另一个 include 隐藏它之前获得它。