makefile - Makefile 函数定义参数
问题描述
我有一个看起来像这样的 Makefile:
define cap
@echo $1
endef
f:
$(foreach x,$(shell command),$(call cap,$x))
命令输出
x1
x2
x3
x4
x5
让 f 给我
x1 @echo x2 @echo x3 @echo x4 @echo x5
我想要的输出是
x1
x2
x3
x4
x5
我不确定为什么 cap prints echo 这样。
解决方案
非常简单:每次迭代都会foreach
生成字符串@echo ..
,然后将它们附加在一起并发送到 shell。因此,在 foreach 循环完成扩展后,您的配方如下所示:
@echo x1 @echo x2 @echo x3 @echo x4 @echo x5
如果你在 shell 中运行它,它会给出你看到的输出。
如果您想将这些作为单独的 shell 命令运行,您可以使用;
它们来分隔它们,但您必须删除 ,@
因为这不是有效的 shell 运算符:
define cap
echo $1
endef
f:
@$(foreach x,$(shell command),$(call cap,$x);)
推荐阅读
- jquery - toggleClass 仅在使用 .className 时工作
- java - 无法在 Angular + Spring Boot 项目中使用 *ngFor 显示元素列表
- node.js - 内容安全策略错误:后端页面无法在 Firefox 浏览器中加载
- mysql - AWS SSM 端口转发不起作用 - 使用最新的 SSM 代理
- python - 从文件离线更新 conda 环境
- c# - 避免不必要的字符串替换
- laravel - 如何检查是否在内部验证请求中?
- python - 避免将应用程序工厂导入需要应用程序上下文的模块
- bash - 遍历子目录:如果一个命令失败,我该如何恢复?
- c# - Roslyn Source Generator 未在 .net 框架 4.7.2 中生成任何源