Как исправить синтаксическую ошибку Makefile при использовании подстановочного знака на make clean? - PullRequest
7 голосов
/ 03 августа 2011

У меня есть простой Makefile, который содержит только одну цель.Это выглядит так:

SHELL:=/bin/bash

clean:
    rm !(*.tex|Makefile|*.pdf)

Когда я запускаю эту команду в bash, она работает нормально, то есть не выдает ошибок и удаляет нужные файлы.Однако, когда я запускаю make clean, он выдает следующие ошибки:

$ make clean
rm !(*.tex|Makefile|*.pdf)
/bin/bash: -c: line 0: syntax error near unexpected token `('
/bin/bash: -c: line 0: `rm !(*.tex|Makefile|*.pdf)'
make: *** [clean] Error 1

Кто-нибудь понял, что я делаю неправильно?Спасибо.

1 Ответ

12 голосов
/ 03 августа 2011

Измените строку SHELL на

SHELL:=/bin/bash -O extglob

Параметр extglob не установлен по умолчанию, поэтому вы должны сделать это самостоятельно.

...