我有一个简单的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
有人知道我做错了什么吗?感谢。
答案 0 :(得分:12)
将SHELL
行更改为
SHELL:=/bin/bash -O extglob
默认情况下未设置extglob
选项,因此您必须自己执行此操作。