假设我有 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
?
类似这样的命令 notdir
或外壳的 basedir
是简单的文本字符串解析器。 所以如果你说 basename foo/..
它只是返回 ..
因为那是路径上的最后一个元素。
如果你想要父目录,有多种方法可以实现。 一个简单的方法是使用 make abspath
函数,将相对路径转换为绝对路径。$(abspath /foo/bar/biz/..)
将返回 /foo/bar
. 所以,你可以用。
PARENT = $(notdir $(abspath $(CURDIR)/..))