在 GNU Make 函数中使用 shell 个参数
Use shell arguments inside GNU Make function
是否可以在 makefile 函数中使用 shell 参数?
例如
mywords:=hello there neighbour
myrecipe:
for ((i = 0 ; i < 3 ; i++)); do \
this_word=$(word $${i}, $(mywords)); \
done
除了myrecipe
给出错误non-numeric first argument to 'word' function: '${i}'. Stop
请记住,make 在对 shell 进行任何操作之前首先展开整个配方(是的,这就是所有配方行)。
只有在完全展开之后 make 才会查找单独的配方行,运行 每行依次查找。
因此,make 当您有一个扩展到多行的宏时,它的行为是明智的。
它还提示您应该尽可能使用 make 功能。
mywords := hello there neighbour
define mkcommand
echo
something
endef
myrecipe:
$(foreach _,${mywords},$(call mkcommand,$_))
现在,当您要求 make 构建 myrecipe 时,
make 看到类似的东西:
myrecipe:
echo hello
something hello
echo there
something there
⋮
恕我直言,如果您发现自己在 makefile 中编写 shell 循环,那几乎总是一个错误。
是否可以在 makefile 函数中使用 shell 参数? 例如
mywords:=hello there neighbour
myrecipe:
for ((i = 0 ; i < 3 ; i++)); do \
this_word=$(word $${i}, $(mywords)); \
done
除了myrecipe
给出错误non-numeric first argument to 'word' function: '${i}'. Stop
请记住,make 在对 shell 进行任何操作之前首先展开整个配方(是的,这就是所有配方行)。 只有在完全展开之后 make 才会查找单独的配方行,运行 每行依次查找。
因此,make 当您有一个扩展到多行的宏时,它的行为是明智的。
它还提示您应该尽可能使用 make 功能。
mywords := hello there neighbour
define mkcommand
echo
something
endef
myrecipe:
$(foreach _,${mywords},$(call mkcommand,$_))
现在,当您要求 make 构建 myrecipe 时, make 看到类似的东西:
myrecipe:
echo hello
something hello
echo there
something there
⋮
恕我直言,如果您发现自己在 makefile 中编写 shell 循环,那几乎总是一个错误。