Makefile-从包含的文件中获取其自身的目录

时间:2019-02-18 13:07:07

标签: makefile

说一个makefile包含多个其他makefile。这些包含的生成文件如何才能知道相对于主生成文件的自身路径?

示例结构如下:

主要品牌

include ../dir1/dir2/make1.mk
include dir3/dir4/dir5/make2.mk

.PHONY: print_paths
print_paths:
    @echo $(dir1) && @echo $(dir2)

make1

dir1 = <some code>

make2

dir2 = <some code>

我的预期输出是:

../dir1/dir2
dir3/dir4/dir5

我能够通过以下方式为单个包含文件解决此问题:

dir1 = $(dir $(lastword $(MAKEFILE_LIST)))

但是,这似乎不适用于多个文件,因为dir1dir2都将被设置为等于makefile两个目录。 (我猜这是公平的吗?毕竟这是最后一个包含的文件)

或者,他们也知道自己的绝对路径也可以。

1 个答案:

答案 0 :(得分:1)

您可以简单地添加:

dir1 := $(dir $(lastword $(MAKEFILE_LIST)))

../dir1/dir2/make1.mk的开头,并且:

dir2 := $(dir $(lastword $(MAKEFILE_LIST)))

dir3/dir4/dir5/make2.mk的开头。