рекурсивная пользовательская функция в make файле заканчивается из стековой памяти

77
5

У меня есть функция, которая возвращает все файлы в каталоге.

# Returns all files in folder recursively that match pattern 
#
# $(call rwildcard, folder,pattern)
rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))

Аргумент 1, т.е. Папка, - это путь к папке, где рекурсивно искать файлы, и это пользователь предоставил

Если этот аргумент "/", это может закончиться нехваткой памяти и сбоем с исключением.

Есть ли способ предотвратить это? кроме фильтрации "/" в качестве аргумента.

Примечание: я использую cygwin

спросил(а) 2021-01-19T17:06:08+03:00 6 месяцев назад
1
Решение
101

Я подозреваю, что вы не делаете никаких изменений во внутренней карте rwild. Если он соответствует "." каждый раз, вы застряли в петле?

Можете ли вы использовать другой инструмент для получения списка файлов?

r := $(shell find $(dir) -type f -name \*$(likethis)\*)

ответил(а) 2021-01-19T17:06:08+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема