gpt4 book ai didi

makefile:查找变量中单词的位置

转载 作者:行者123 更新时间:2023-12-02 22:36:32 25 4
gpt4 key购买 nike

在我的 makefile 中,我需要根据命令行变量值进行变量赋值。例如,我这样做:

make var_1=xxx

其中 var_1 可以有 100 个可能值之一。根据 var_1 的值,我需要在 makefile 中为 var_2 分配一个值。我可以这样做:

ifeq ($(var_1), a)
var_2 = A
endif
ifeq ($(var_1), b)
var_2 = B
endif

对于 var_1var_2 的所有 100 种可能的组合,依此类推。这里a,A,b,B代表一些字符串。如何避免使用 100 个 if 语句?我想定义两个变量:

var_1_values = a b c d     
var_2_values = A B C D

我可以使用 $(findstring $(var_1),$(var_1_values)) 来查看 $(var_1) 是否在 $(var_1_values),但是如何在所有$(var_1_values)中找到$(var_1)的位置呢?然后,该位置将用于选择 $(var_2_values) 中相应的单词。

最佳答案

这有点麻烦,但如果您知道某个符号不会出现在任何值中(例如“_”),您可以这样做:

var_1_values = a b c d
var_2_values = A B C D

# This will be a_A b_B c_C d_D
LIST1 = $(join $(addsuffix _,$(var_1_values)),$(var_2_values))

var_1 := a

# The filter gives a_A, the subst turns it into A
var_2 = $(subst $(var_1)_,,$(filter $(var_1)_%, $(LIST1)))

关于makefile:查找变量中单词的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674711/

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