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

发布于 2024-11-27 21:32:29 字数 446 浏览 1 评论 0原文

我有一个简单的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染火枫林 2024-12-04 21:32:29

SHELL 行更改为

SHELL:=/bin/bash -O extglob

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

Change the SHELL line to

SHELL:=/bin/bash -O extglob

The extglob option is not set by default, so you have to do that yourself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文