遍历Makefile中的列表?

我发现我正在编写许多Makefile,可以使用 n个 元组列表清除它们。但是我找不到任何正确(干净)地进行此操作的方法。到目前为止,我只能使用

$(shell …)trsed 或其他非Makefile标准。

例如,我想这样做:

XYZs = \

dog.c pull_tail bark \

duck.c chase quack \

cow.c tip moo

all:

@- $(foreach X Y Z,$(XYZs), \

$(CC) $X -o bully/$Y ; \

ln bully/$Y sounds/$Z ; \

)

有没有一种很好的方法来迭代Makefile中的 n个 元组列表?谢谢!

回答:

Makefile本质上是声明性的,因此我认为make本身不能提供所需的内容。但是,您似乎想将某些字符串值与特定目标相关联,因此可能会引起关注GNU make

的“

目标特定变量值”功能。这是手册的摘录:

目标特定变量的另一个特殊功能:定义目标特定变量时,该变量值也对该目标的所有依赖项有效(除非这些依赖项用其自己的目标特定变量值覆盖它)。因此,例如,如下语句:

prog : CFLAGS = -g

prog : prog.o foo.o bar.o

将设置CFLAGS-g在命令脚本prog,但它也将设置CFLAGS,以-g在创建prog.o,foo.o的,而文件bar.o的命令脚本,并建立它们的依赖任何命令脚本。

如果您还没有阅读过GNU make手册,那真是太好了。

要做您在评论中提出的问题:

dog: ANIMAL=dog.c BULLY=pull_tail SOUND=bark

采用:

dog: ANIMAL=dog.c 

dog: BULLY=pull_tail

dog: SOUND=bark

以上是 遍历Makefile中的列表? 的全部内容, 来源链接: utcz.com/qa/429173.html

回到顶部