如果我有一个n个命令的列表,c = c1 ... cn,我如何执行它们以便给定目标?我尝试了foreach结构
$(foreach x,$(c),./$(x))
Run Code Online (Sandbox Code Playgroud)
但是这会将所有命令放在一行上.有线索吗?
bob*_*ogo 10
您确定了问题("但是将所有命令放在一行上").只需$x在循环中展开时,只需添加换行符即可.
define \n
endef
Run Code Online (Sandbox Code Playgroud)
现在只需$(foreach x,$c,./$(x)${\n})在你的食谱中使用.
如果不需要检查是否成功,那么添加分号应该有效:
$(foreach x,$c,./$(x);)
Run Code Online (Sandbox Code Playgroud)
如果您需要在列表中的某个命令返回失败时失败,则需要逐步分解它.我们不是直接执行命令,而是将执行包装在make函数中:
define execute-command
$(1)
endef
execute-list:
$(foreach x,$(c),$(call execute-command,./$(x)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5620 次 |
| 最近记录: |