当前位置: 首页 > 面试题库 >

遍历Makefile中的列表?

东郭宏朗
2023-03-14
问题内容

我发现我正在编写许多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


 类似资料:
  • 输入是一个列表列表。请看下面。文件名是一个列表,包含的名称与列表中的列表数量相同(,,) 每个名称都附加到路径中:-- 程序在遍历列表时遍历包含路径的列表,并打印路径及其文件名。我希望输出是--。然而,我得到了下面的输出。请查看输入后的输出 输入 输出 我希望输出是-- 然而,我得到的结果如下: 我无法理解为什么在遍历列表时不能使用文件名遍历路径列表。我希望这有助于澄清问题。有人能帮忙吗? 我已经

  • 问题内容: 这样遍历Java中的列表是否较慢: 相对于: 问题答案: 我假设您出于好奇而问,不会引用Knuth(可能有人会)。 我相信,一旦您的代码被编译,就不会有任何改变。它 确实 有所作为 之前 (例如2是很多更易读和简洁的),所以要为2号和不关心的休息。 就是我的2美分 编辑 请注意,代码段1中的代码会在每次循环运行时进行计算,这可能使其比代码2还要慢 还需要编辑 我必须仔细检查一下,Jos

  • 问题内容: 我有一个这样的清单清单。 现在,我需要遍历上面的列表并输出一个字符串列表,如下所示(原始列表中没有数字) 问题答案: 准确执行您指定的操作的最简单解决方案是: 这基本上等效于迭代版本: 但是,这并不是遍历具有任意维数的多维列表的通用方法,因为嵌套列表推导/嵌套的for循环可能很难看。但是,对于2或3维列表,您应该放心。 如果您确实决定需要平整3个以上的尺寸,我建议实现一个递归遍历函数,

  • 问题内容: 是否可以在Python中以以下方式迭代列表(将此代码作为伪代码进行处理)? 它应该产生 问题答案: 从食谱:

  • 问题内容: 我想要一种算法来遍历列表切片。切片大小在功能之外设置,可以不同。 在我看来,这就像: 有没有一种使用python 2.5正确定义的方法或其他方法? edit1:澄清 “分区”和“滑动窗口”这两个术语听起来都适用于我的任务,但是我不是专家。因此,我将更深入地解释该问题并添加到问题中: FatherList是我从文件中获取的一个多级numpy.array。函数必须找到序列的平均值(用户提供

  • 问题内容: 我有两个列表和数字,我想使用相同的指令遍历它们。像这样: 但这感觉多余。我知道我会写,但是要付出一定的时间。 有没有办法做到这一点而又不浪费时间呢? 问题答案: 这可以通过以下方式完成 : 将打印: 根据文档,请执行以下操作: 创建一个迭代器,该迭代器从第一个可迭代对象返回元素,直到耗尽为止,然后继续进行下一个可迭代对象,直到所有可迭代对象都耗尽为止。 如果列表中有列表, 则可用: 产