我试图在多平台Makefile中“优化”我的“干净”目标,因此我正在寻找一种删除带有或不带有Windows扩展名.exe
的可执行文件的方法。
当然可以!
rm file file.exe
但是我正在寻找类似的东西
rm file(.exe)?
我也尝试过
rm file{,.exe}
这也不起作用。
我很惊讶地发现我尝试的方法不起作用,所以我主要是为了发布更多关于globing的信息,因为带有两个显式文件名的版本可以正常工作。
答案 0 :(得分:3)
默认情况下,Make使用/bin/sh
执行命令,其对glob的支持有限。
$ cat Makefile
test:
echo foo{bar,baz}
$ make
echo foo{bar,baz}
foo{bar,baz}
如果您想使用花括号等精美功能,则需要通过设置SHELL
来切换外壳。
$ cat Makefile
SHELL = /bin/bash
test:
echo foo{bar,baz}
$ make
echo foo{bar,baz}
foobar foobaz
我不一定建议这样做,因为它会使Makefile的可移植性降低。
对于它的价值,GNU Automake的策略是根据平台设置EXEEXT
变量。那么干净的规则是:
rm -f file$(EXEEXT)