说一个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)))
但是,这似乎不适用于多个文件,因为dir1
和dir2
都将被设置为等于makefile两个目录。 (我猜这是公平的吗?毕竟这是最后一个包含的文件)
或者,他们也知道自己的绝对路径也可以。
答案 0 :(得分:1)
您可以简单地添加:
dir1 := $(dir $(lastword $(MAKEFILE_LIST)))
../dir1/dir2/make1.mk
的开头,并且:
dir2 := $(dir $(lastword $(MAKEFILE_LIST)))
dir3/dir4/dir5/make2.mk
的开头。