目前,只有这样,我知道如何环路Makefile
s是只调用shell的for循环:是否有Makefile级别的“for”循环?
BIN_TARGETS=foo bar baz
bin: $(BIN_TARGETS)
run: bin
for FILE in $(BIN_TARGETS) ; do ./$$FILE ; done
的问题,这是make
只会调用shell的for循环,呼应整个循环,然后每一个程序运行并输出其输出(如果有任何错误,他们只是在循环的末端,仅在循环中的最后一个节目报道):
$ make run
for FILE in foo bar baz ; do ./$FILE ; done
output of foo
output of bar
output of baz
有什么Makefile
-level for
循环即会entially是完全等效的这个?:
run: bin
./foo
./bar
./baz
这将输出这样的:
$ make run
./foo
output of foo
./bar
output of bar
./baz
output of baz
,并因为它发生会报告任何错误。
“报告错误” 你的意思是 “中止”?因为shell循环会输出错误/ etc。当他们发生但是不会放弃他们。 – 2015-02-06 21:22:16
@EtanReisner:是的,基本上。通过“报告”,我的意思是'Makefile:XX:配方'运行'失败'make:*** [run] Error 27'消息。 – Matt 2015-02-06 21:23:54
你可以通过使用'./$FILE ||'来获得shell循环的失败行为。退出$?'作为我相信的循环体。 – 2015-02-06 21:25:09