10

n 個のコマンドのリストc = c1 ... cnがある場合、特定のターゲットに対してそれらを順番に実行するにはどうすればよいですか? foreachコンストラクトを試しました

$(foreach x,$(c),./$(x))

しかし、それはすべてのコマンドを 1 行にまとめます。手がかりはありますか?

4

2 に答える 2

14

成功を確認する必要がない場合は、セミコロンを追加すると機能するはずです。

$(foreach x,$c,./$(x);)

リスト内のコマンドの1つが失敗を返した場合に失敗する必要がある場合は、段階的に中断する必要があります。コマンドを直接実行する代わりに、実行をmake関数でラップします。

define execute-command
$(1)

endef

execute-list:
        $(foreach x,$(c),$(call execute-command,./$(x)))
于 2012-09-21T10:24:26.000 に答える
14

問題を特定しました(「ただし、すべてのコマンドが1行に表示されます」)。$xループを展開するたびに改行を追加する必要があります。

define \n


endef

$(foreach x,$c,./$(x)${\n})今、あなたのレシピで単に使用してください。

于 2012-09-21T10:46:20.117 に答える