6

我想告诉 (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
4

2 回答 2

7

手册没有给出基于的食谱MAKEFILE_LIST吗?

基本上

this_makefile := $(lastword $(MAKEFILE_LIST))

在任何include指令都可以解决问题之前。

于 2012-10-12T15:19:24.453 回答
5

查看GNU make - 其他特殊变量MAKEFILE_LIST包括读取的所有 Makefile。所以,如果你拿第一个并解压目录,你就完成了。

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

include $(MAKEFILE_DIR)Common.inc
于 2012-10-12T15:42:18.590 回答