在 make clean 上使用通配符时如何修复 Makefile 语法错误?
我有一个简单的 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
有人知道我做错了什么吗?谢谢。
I have a simple Makefile that just contains this one target. It looks like this:
SHELL:=/bin/bash
clean:
rm !(*.tex|Makefile|*.pdf)
When I run this command in bash it works fine, i.e. it gives no errors and it removes the desired files. However when I run make clean
it gives the following errors:
$ 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
Has anybody got an idea what I'm doing wrong? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将
SHELL
行更改为extglob
选项默认情况下未设置,因此您必须自己执行此操作。Change the
SHELL
line toThe
extglob
option is not set by default, so you have to do that yourself.