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

时间:2012-10-12 15:06:19

标签: makefile gnu-make

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

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

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

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

include ./scripts/make/Common.inc
...

我想写下以下内容,假设_MAKEFILE_包含TaskA.mk位置:

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

MAKEFILE_DIR=$(dirname $(_MAKE_FILE_))

include $(MAKEFILE_DIR)/Common.inc

2 个答案:

答案 0 :(得分:6)

不是手册give a recipe based on MAKEFILE_LIST

基本上

this_makefile := $(lastword $(MAKEFILE_LIST))

在任何include指令执行之前

答案 1 :(得分:4)

看看GNU make - Other Special VariablesMAKEFILE_LIST包括所有Makefile阅读。所以,如果你拿第一个并解压缩目录,那就完成了。

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

include $(MAKEFILE_DIR)Common.inc