Makefile 函数定义参数
Makefile function defintion arguments
我有一个如下所示的 Makefile:
define cap
@echo
endef
f:
$(foreach x,$(shell command),$(call cap,$x))
命令输出
x1
x2
x3
x4
x5
make f 给我
x1 @echo x2 @echo x3 @echo x4 @echo x5
我想要的输出是
x1
x2
x3
x4
x5
我不确定为什么 cap 打印出这样的 echo。
非常简单:foreach
的每次迭代都会生成字符串 @echo ..
,然后将它们附加在一起并发送到 shell。因此,在 foreach 循环完成扩展后,您的配方如下所示:
@echo x1 @echo x2 @echo x3 @echo x4 @echo x5
如果你 运行 在 shell 中,它会给出你看到的输出。
如果你想 运行 这些作为单独的 shell 命令,你可以使用 ;
来分隔它们,但你必须删除 @
因为那不是有效的 shell 运算符:
define cap
echo
endef
f:
@$(foreach x,$(shell command),$(call cap,$x);)
我有一个如下所示的 Makefile:
define cap
@echo
endef
f:
$(foreach x,$(shell command),$(call cap,$x))
命令输出
x1
x2
x3
x4
x5
make f 给我
x1 @echo x2 @echo x3 @echo x4 @echo x5
我想要的输出是
x1
x2
x3
x4
x5
我不确定为什么 cap 打印出这样的 echo。
非常简单:foreach
的每次迭代都会生成字符串 @echo ..
,然后将它们附加在一起并发送到 shell。因此,在 foreach 循环完成扩展后,您的配方如下所示:
@echo x1 @echo x2 @echo x3 @echo x4 @echo x5
如果你 运行 在 shell 中,它会给出你看到的输出。
如果你想 运行 这些作为单独的 shell 命令,你可以使用 ;
来分隔它们,但你必须删除 @
因为那不是有效的 shell 运算符:
define cap
echo
endef
f:
@$(foreach x,$(shell command),$(call cap,$x);)