Mat*_*ner 13 makefile gnu-make
我有一个规则something,适用于变量VAR.我也有另一个规则something-all,需要运行something,以VAR设置为每个值vars.
vars = hello world
something:
echo $(VAR)
something-all:
$(foreach VAR,$(vars),something)
Run Code Online (Sandbox Code Playgroud)
我得到了这不太有效
noob@work:~/Desktop$ make something-all
something something
make: something: No such file or directory
make: *** [something-all] Error 1
Run Code Online (Sandbox Code Playgroud)
它应该打印hello\nworld.
我曾经通过检索VAR来通过通配符规则这样做%,但感觉这是错误的方法.这看起来像这样:
vars = hello world
all: $(foreach VAR,$(vars),something-$(VAR))
something-%:
echo $*
Run Code Online (Sandbox Code Playgroud)
以下应该可以解决您的问题
使用 foreach(在 sparc-solaris 2.8 和 windows 上尝试过 GNU Make 3.80)
vars = hello world
something:
echo $(VAR)
something-all:
$(foreach i, $(vars), $(MAKE) something VAR=$i || exit 1;)
Run Code Online (Sandbox Code Playgroud)
使用 shell for-loop(在 GNU Make 3.80 上试过,在 sparc-solaris 2.8 上试过 cc make)
vars = hello world
something:
echo $(VAR)
something-all:
for i in $(vars); do $(MAKE) something VAR=$$i || exit 1; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |