Изучение различных способов получения текущего каталога в Makefile

Makefiles — это мощные инструменты для автоматизации задач разработки программного обеспечения. Одним из распространенных требований Makefiles является доступ к текущему пути к каталогу (PWD). В этой статье блога мы рассмотрим различные методы получения текущего каталога в Makefile, используя разговорный язык и предоставляя примеры кода.

Метод 1: использование функции $(shell)
Функция $(shell) позволяет выполнять команды оболочки в файлах Makefile. Мы можем использовать эту функцию для получения текущего каталога с помощью команды pwd:

CURRENT_DIR := $(shell pwd)

Метод 2: использование переменной $(CURDIR)
В файлах Makefile есть встроенная переменная $(CURDIR), которая представляет текущий каталог. Мы можем присвоить эту переменную другой переменной для дальнейшего использования:

CURRENT_DIR := $(CURDIR)

Метод 3: использование функции $(abspath)
Функция $(abspath) преобразует заданный путь в абсолютный путь. Передав фиктивное имя файла в $(abspath), мы можем получить абсолютный путь к текущему каталогу:

CURRENT_DIR := $(abspath $(lastword $(MAKEFILE_LIST))/..)

Метод 4: использование функции $(realpath)
Подобно $(abspath), функция $(realpath) также преобразует заданный путь в абсолютный путь. Мы можем использовать его для получения текущего каталога:

CURRENT_DIR := $(realpath .)

Метод 5: использование команды оболочки
Если ваш Makefile напрямую поддерживает команды оболочки, вы можете использовать команду оболочки для выполнения команды pwdи получения текущего каталога:

CURRENT_DIR := $(shell pwd)