如何在运行时找出gmake中的当前Makefile位置

Val*_*ano 4 makefile gnu-make

我想告诉(g)make从单独的文件中包含一些常见的初始化,知道包含文件相对于主Makefile的相对位置.

但是在手册中我找不到任何内置变量,例如,它会为您提供当前Makefile的名称.

例如,如果我想将文件的内容包含在与当前make文件相同的目录中,而不是硬连接include的位置:

# MAIN Makefile : ./scripts/make/TaskA.mk

include ./scripts/make/Common.inc
...
Run Code Online (Sandbox Code Playgroud)

我想写下类似于_MAKEFILE_包含TaskA.mk位置的内容:

# MAIN Makefile : ./scripts/make/TaskA.mk

MAKEFILE_DIR=$(dirname $(_MAKE_FILE_))

include $(MAKEFILE_DIR)/Common.inc
Run Code Online (Sandbox Code Playgroud)

dmc*_*kee 6

手册不是基于的配方MAKEFILE_LIST吗?

基本上

this_makefile := $(lastword $(MAKEFILE_LIST))
Run Code Online (Sandbox Code Playgroud)

在任何include指令应该做的伎俩之前.


Ola*_*che 5

查看GNU make - 其他特殊变量MAKEFILE_LIST包括所有读取的 Makefile。因此,如果您提取第一个并提取目录,就完成了。

MAKEFILE_DIR=$(dir $(firstword $(MAKEFILE_LIST)))

include $(MAKEFILE_DIR)Common.inc
Run Code Online (Sandbox Code Playgroud)