我在我的Makefile有一行是关于类似的东西:由于zsh,Makefile不扩展glob?
prog /something/f.{one,two,three}
但在运行make文件我从
/something/f.{one,two,three}
不存在PROG得到。这导致我相信,使 不扩大glob。通常情况下,这将在Bash中适用于我,但我现在正在运行zshell,所以我认为这是问题所在。任何人都知道如何可移植地指定该模式?
我在我的Makefile有一行是关于类似的东西:由于zsh,Makefile不扩展glob?
prog /something/f.{one,two,three}
但在运行make文件我从
/something/f.{one,two,three}
不存在PROG得到。这导致我相信,使 不扩大glob。通常情况下,这将在Bash中适用于我,但我现在正在运行zshell,所以我认为这是问题所在。任何人都知道如何可移植地指定该模式?
是否需要扩展壳体? Make可以为你做类似的事情。这仅仅是一个办法做到这一点:
EXPANDED_POSTFIX := one two three
BASE_FILE := f.
PROG_FILE_LIST := $(foreach post,${EXPANDED_POSTFIX},${BASE_FILE}${post})
exec_prog:
prog ${PROG_FILE_LIST}
除了下面的答案,注意使_always_运行/斌/当它调用一个shell时。它不会运行用户喜欢的任何shell(想象一下什么是可移植性灾难!)大括号扩展不是sh的POSIX标准的一部分,所以/ bin/sh通常不支持它。 – MadScientist 2013-03-15 13:14:48
您可以在Makefile中将'SHELL'设置为'/ bin/zsh',但这会导致@MadScientist提及的可移植性灾难(如果使用您的Makefile的用户没有'/ bin/zsh',则Makefile会'为他们工作)。 – chepner 2013-03-15 14:06:08