Не могли бы вы объяснить, почему правило Makefile:
clean:
rm -f foo.{bar1,bar2,bar3}
не приводит к удалению файлов: foo.bar1, foo.bar2 и foo.bar3?
Я полагаю, что я видел подобный шаблон много раз в различных файлах Makefile, но сейчас я пишу свой собственный файл Makefile и не могу заставить это правило работать правильно (файлы не удаляются).
Я использую:
- GNU Make 3,81
- GNU Bash 4.1.5
Баш пытается избежать этого, как я подозреваю:
$ echo test.{a,b,c}
test.a test.b test.c
Спасибо!
UPDATE
Благодаря подсказке Дэвида я нашел решение для проблемы, описанной выше.
Gnu make по умолчанию использует / bin / sh, поэтому a. {1,2,3} не оценивается как a.1 a.2 a.3.
Чтобы заставить 'make' использовать bash вместо sh, добавьте следующую строку в ваш Makefile:
SHELL=/bin/bash
отныне a. {1,2,3} будет считаться a.1 a.2 a.3