例如,我有一个变量 $(modules),这个变量包含一个对象列表(用空格分隔的字符串),例如“Modules = obj1 obj2...”等等。
模块中的每个 obj 还包含一个列表,比如“obj1 = obj1a obj1b ...”等等。
现在,我想创建一个变量来包含所有这些最低级别的变量(例如 obj1a),例如,“$(variable) = obj1a obj1b...obj2a obj2b...”
我试过 $($(modules))... 显然没有用...
使用foreach
功能:
MODULES := foo bar baz
foo := a b c
bar := i j k
baz := x y z
FLAT_MODULES := $(foreach m,$(MODULES),$($m))
# FLAT_MODULES is now 'a b c i j k x y z'
因此,根据您的描述,假设您有三个变量 obj1、obj2 和 obj3 来保存您的“对象”名称。然后,你需要一个变量,比如 MODULES,来保存这三个变量的内容。
像下面的代码不会做你想要的吗?
.PHONY: test
MODULES=$(obj1) $(obj2) $(obj3)
obj1=foo1 bar1
obj2=foo2 bar2
obj3=foo3 bar3
all:
echo $(MODULES)
显然将“回声”替换为您想要的任何内容?