在 makefile 中的 rm 中使用括号

在 makefile 中的 rm 中使用括号

因此,我正在学习 Makefile,在一个示例中,我要删除 clean 部分中的文件。我想做一些类似的事情rm paper.{aux,pdf,bib,bbl},但当我这样做时,make clean它无法识别任何类似的文件。在 makefile 之外执行该删除命令可以正常工作。makefile 不能很好地处理这样的括号吗?在这样的上下文中,我没有找到太多关于 makefile 中的括号的信息。

答案1

这是因为默认make使用作为 shell - 括号扩展是更复杂的 shell 的一个特性,例如。/bin/sh/bin/bash

您可以在 Makefile ex 中明确设置 shell。

SHELL := /bin/bash

.PHONY: clean

clean:
        @echo rm paper.{aux,pdf,bib,bbl}

GNU make 手册:5.3.2 选择 Shell

相关内容