如何基于整数后缀在Makefile中创建多个目标

如何基于整数后缀在Makefile中创建多个目标,makefile,Makefile,我有一个文件“数据”和一些脚本“命令” 我想创建一个包含多个目标规则的Makefile,这些规则共同实现以下目标: for i in 1 to 100: // i-th rule depends on data, command, part$(i)/output1 and part$(i)/output2 mkir part$(i) command data $(i) part$(i)/output1 part$(i)/output2 我不想手写。正如我在上面的评论中所

我有一个文件“数据”和一些脚本“命令”

我想创建一个包含多个目标规则的Makefile,这些规则共同实现以下目标:

for i in 1 to 100:
    // i-th rule depends on data, command, part$(i)/output1 and part$(i)/output2
    mkir part$(i)
    command data $(i) part$(i)/output1 part$(i)/output2

我不想手写。

正如我在上面的评论中所说,你的问题没有提供正确的信息。但是这里有一个切口,也许它足够近,你可以修改它:

NUM := $(shell seq 1 100)
TARGETS := $(foreach I,$(NUM),part$I/output1 part$I/output2)

all: $(TARGETS)

part%/output1 part%/output2 : command data
        mkdir part$*
        command data $* part$*/output1 part$*/output2

您的注释“第i条规则取决于数据、命令、部分$(i)/output1和部分$(i)/output2”不正确。使目录
part$(i)
依赖于文件
part$(i)/output1
part$(i)/output2
的规则怎么可能呢?好吧,假设这些目录已经存在,问题不在于目录。如果您真的说目标依赖于output1和output2文件;如果它们被输入到
命令
,那么运行规则的结果是什么?调用规则时会生成哪些文件?每个makefile规则都有三个部分:输入(先决条件)、输出(目标)和转换它们的命令(配方)。你的问题没有明确说明你的情况是什么。哦,对不起,这是一个错误,它应该只依赖于数据和命令。那么,这是否意味着output1和output2是生成的文件(目标)?这就是你问题中缺少的信息。不管怎样,看起来你已经明白了。