如果我有n 个命令的列表c = c1 ... cn,我如何才能为给定的目标执行它们?我尝试了foreach构造
$(foreach x,$(c),./$(x))
但这会将所有命令放在一行上。有什么线索吗?
如果我有n 个命令的列表c = c1 ... cn,我如何才能为给定的目标执行它们?我尝试了foreach构造
$(foreach x,$(c),./$(x))
但这会将所有命令放在一行上。有什么线索吗?
如果不需要检查是否成功,那么添加分号应该可以工作:
$(foreach x,$c,./$(x);)
如果列表中的命令之一返回失败,则需要失败,则需要逐步中断它。我们不是直接执行命令,而是将执行包装在一个 make 函数中:
define execute-command
$(1)
endef
execute-list:
$(foreach x,$(c),$(call execute-command,./$(x)))
您发现了问题(“但这将所有命令放在了一行”)。$x
每当您在循环中展开时,您只需要添加一个换行符。
define \n
endef
现在只需$(foreach x,$c,./$(x)${\n})
在你的食谱中使用。