gpt4 book ai didi

makefile - Makefile 中的随机访问数组

转载 作者:行者123 更新时间:2023-12-05 01:45:53 38 4
gpt4 key购买 nike

我想写一个 Makefile 来执行来自两个不同数组的两个输入的命令例如

a = A B C
b = 1 2 3

./run A 1
./run B 2
./run C 3

我不知道怎么写,因为在Makefile中没有办法访问数组索引

最佳答案

使用 $(word n,text) 可以将空格分隔的列表视为数组:

./run $(word 1,$(a)) $(word 1,$(b))
./run $(word 2,$(a)) $(word 2,$(b))
./run $(word 3,$(a)) $(word 3,$(b))

为了避免重复你自己,你可以像这样定义一个助手:

run-cmd = ./run $(word $1,$(a)) $(word $1,$(b))

然后像这样生成你的命令:

$(call run-cmd,1)
$(call run-cmd,2)
$(call run-cmd,3)

另一种方法是使用我不久前编写的这个东西:

list-rem = $(wordlist 2,$(words $1),$1)
pairmap = $(and $(strip $2),$(strip $3),$(call \
$1,$(firstword $2),$(firstword $3))$(call \
pairmap,$1,$(call list-rem,$2),$(call list-rem,$3)))

这个 pairmap 将一个函数名作为第一个参数,将两个以空格分隔的列表作为第二个和第三个参数。它为两个列表中的每个压缩对调用函数。

然后你可以像这样定义一个助手:

run-cmd = ./run $1 $2;

并且 $(call pairmap,run-cmd,$(a),$(b)) 将生成 ./run A 1;./run B 2;./run C 3

关于makefile - Makefile 中的随机访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39674277/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com