如何在Makefile中获取当前目录的父目录名?

问题描述 投票:0回答:1

假设我有 Makefile/myPDir/myCurrDir. 在一个 Makefile 我可以检索到当前目录的名称为。

CURR_DIR_NAME  := $(notdir $(CURDIR))
$(warning CURR_DIR_NAME IS $(CURR_DIR_NAME))

或者

CURR_DIR_NAME  := $(shell basename $(CURDIR))
$(warning CURR_DIR_NAME IS $(CURR_DIR_NAME))

在这两种情况下,第二行将打印 myCurrDir.

现在我想获得父目录的名称,即 myPDir. 我试着用 $(CURDIR), $(CURDIR)/.. 但它不工作,打印 ....

如何才能引用父目录的名称,即得到字符串。myCurrDir 中的一个变量,作为 Makefile?

makefile directory compilation
1个回答
1
投票

类似这样的命令 notdir 或外壳的 basedir 是简单的文本字符串解析器。 所以如果你说 basename foo/.. 它只是返回 .. 因为那是路径上的最后一个元素。

如果你想要父目录,有多种方法可以实现。 一个简单的方法是使用 make abspath 函数,将相对路径转换为绝对路径。$(abspath /foo/bar/biz/..) 将返回 /foo/bar. 所以,你可以用。

PARENT = $(notdir $(abspath $(CURDIR)/..))
© www.soinside.com 2019 - 2024. All rights reserved.