То, что у вас есть, это, по сути, запутанный сценарий оболочки - вы не используете никаких функций самого make.
Содержат ли имена ваших подкаталогов пробельные символы?Если это так, то make
, возможно, просто не подходящий инструмент для работы: он действительно хочет работать с разделенными пробелами списками слов и не имеет понятия цитирования, которое могло бы помочь ему справляться с пробелами в путях.
Если имена подкаталогов содержат пробелы, я бы разделил их на отдельный сценарий оболочки и make-файл, например:
#/bin/sh
find . -maxdepth 1 -type d | while read d; do
make -f `dirname $0`/Makefile -C "$d" gallery.html
done
и
gallery.html:
echo "Making gallery\n";
(с учетомчто, если в ваших подкаталогах есть больше путей с пробелами, make все равно может быть плохим выбором)
Если имена подкаталогов не содержат пробелов, то все можно сделать намного проще, и вы также можете избежатьрекурсивный вызов make (google "рекурсивный make считается вредным" по причинам, почему):
SUBDIRS := $(wildcard */)
all: $(SUBDIRS:%=%/gallery.html)
%/gallery.html:
cd $* && echo "Making gallery in `pwd`\n"