Я понятия не имею, почему вы пишите двойной $
: $$dirs
. Попробуйте это:
DIRS := $(foreach dir, $(DEPDIR), $(shell find $(HOME) -type d -name "$(dir)"))
Рассмотрим сузить критерии поиска, поскольку $(HOME)
по определению может содержать что-либо.
Я думаю, вы не будете утверждать, что было бы лучше отслеживать зависимости проекта, используя выделенный каталог. Существует множество способов создания таких каталогов (создание символических ссылок, загрузка/извлечение сжатых пакетов, клонирование репозиториев, использование менеджеров пакетов и т. Д.). Поэтому я предлагаю следующий шаблон.
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
PROJECT_DIR := $(dir $(MAKEFILE_PATH))
DIRS := $(realpath $(addprefix $(PROJECT_DIR)deps/, dir1 dir2 dir3))
Здесь мы извлекаем имя текущего Makefile из MAKEFILE_LIST
, а затем сохранить его абсолютный путь в MAKEFILE_PATH
переменной. Затем часть каталога пути к файлу makefile хранится в PROJECT_DIR
. С помощью addprefix
мы добавим $(PROJECT_DIR)/deps
в начало каждого зависимого каталога (dir1 dir2 dir3
). Затем мы разрешаем символические ссылки и создаем канонические абсолютные имена для зависимых каталогов, а затем сохраняем их в DIRS
.
Пожалуйста, измените вопрос. – surajsn