如何在make clean上使用通配符时修复Makefile语法错误?

时间:2011-08-03 05:47:06

标签: bash shell makefile wildcard

我有一个简单的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 个答案:

答案 0 :(得分:12)

SHELL行更改为

SHELL:=/bin/bash -O extglob

默认情况下未设置extglob选项,因此您必须自己执行此操作。