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

如何获取Makefile中当前目录的父目录的名称?,makefile,directory,compilation,Makefile,Directory,Compilation,假设我在/myPDir/myCurrDir中有Makefile。在Makefile中,我可以检索当前目录的名称,如下所示: CURR_DIR_NAME := $(notdir $(CURDIR)) $(warning CURR_DIR_NAME IS $(CURR_DIR_NAME)) 或 两种情况下的第二行都将打印myCurrDir 现在我想获取父目录的名称,即myPDir。我尝试使用而不是$(CURDIR),$(CURDIR)/…,但它不起作用并打印… 如何引用父目录的名称,即在示例中获

假设我在
/myPDir/myCurrDir
中有
Makefile
。在
Makefile
中,我可以检索当前目录的名称,如下所示:

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

两种情况下的第二行都将打印
myCurrDir

现在我想获取父目录的名称,即
myPDir
。我尝试使用而不是
$(CURDIR)
$(CURDIR)/…
,但它不起作用并打印


如何引用父目录的名称,即在示例中获取字符串
myCurrDir
,作为
Makefile
中的变量?

notdir
或shell的
basedir
这样的命令都是简单的文本字符串解析器。因此,如果您说
basename foo/。
它只返回
,因为这是路径上的最后一个元素

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

PARENT = $(notdir $(abspath $(CURDIR)/..))
PARENT = $(notdir $(abspath $(CURDIR)/..))