Как получить имя родительского каталога текущего каталога в Makefile? - PullRequest
0 голосов
/ 28 апреля 2020

Предположим, у меня есть 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?

1 Ответ

1 голос
/ 28 апреля 2020

Такие команды, как notdir или basedir оболочки - это простые анализаторы текстовых строк. Так что, если вы говорите basename foo/.., он просто возвращает .., так как это последний элемент в пути.

Если вам нужен родительский каталог, есть разные способы сделать это. Одним простым способом является использование функции make abspath для преобразования относительного пути в абсолютный путь: $(abspath /foo/bar/biz/..) вернет /foo/bar. Итак, вы можете использовать:

PARENT = $(notdir $(abspath $(CURDIR)/..))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...