【发布时间】:2019-07-11 21:10:22
【问题描述】:
假设一个 makefile 包含多个其他 makefile。这些包含的 makefile 如何知道相对于主 makefile 的路径?
一个示例结构如下:
主要品牌:
include ../dir1/dir2/make1.mk
include dir3/dir4/dir5/make2.mk
.PHONY: print_paths
print_paths:
@echo $(dir1) && @echo $(dir2)
制作1
dir1 = <some code>
make2
dir2 = <some code>
我的预期输出是:
../dir1/dir2
dir3/dir4/dir5
我能够通过以下方式解决单个包含文件的问题:
dir1 = $(dir $(lastword $(MAKEFILE_LIST)))
但是,这似乎不适用于多个文件,因为dir1 和dir2 都将设置为等于makefile 2 的目录。 (我猜这公平吗?毕竟这是最后一个包含的文件)
另外,他们也可以了解自己的绝对路径。
【问题讨论】:
-
为什么不简单检查
$CURDIR? -
$(CURDIR) 将返回主生成文件的路径。我正在寻找主 makefile 和包含的 makefile 之间的相对路径。
-
更准确地说,
$CURDIR指的是用户的当前目录。重命名希望使问题更清楚。
标签: makefile