makefile,如何引用变量的内容?

时间:2012-05-29 20:30:13

标签: debugging syntax makefile gnu

例如,我有一个变量$(modules),这个变量包含一个对象的列表(用空格分隔的字符串),比如“Modules = obj1 obj2 ...”等等。

模块中的每个obj也包含一个列表,假设“obj1 = obj1a obj1b ...”等等。

现在,我想创建一个变量来包含所有这些最低级别的变量(例如obj1a),例如,“$(variable)= obj1a obj1b ... obj2a obj2b ...”

我试过$($(模块))......它显然不起作用......

2 个答案:

答案 0 :(得分:0)

所以,根据你的描述,让我们假设你有三个变量,obj1,obj2和obj3,它们包含你的“对象”名称。然后,你想要一个变量,比如MODULES,来保存这三个变量的内容。

下面的代码不会做你想要的吗?

.PHONY: test

MODULES=$(obj1) $(obj2) $(obj3)
obj1=foo1 bar1
obj2=foo2 bar2
obj3=foo3 bar3

all:
    echo $(MODULES)

显然用“回声”代替你想要的东西?

答案 1 :(得分:0)

使用foreach function

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'