目前,只有這樣,我知道如何環路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