makefile规则中的多个词干

makefile规则中的多个词干,makefile,dependencies,Makefile,Dependencies,我正在尝试编写一个makefile,它执行以下操作: %-foo-(k).out : %-foo-(k-1).out # do something, e.g. cat $< $@ 会有用的 如果有这样的事情,我可以用多个茎干来做。。。在(gnu)make中做这类事情的另一种方法是什么?做这样的事情没有简单的方法。基本上有两个选项:可以使用自动生成的makefile,也可以使用$(eval…)。对我来说,自动生成的makefiles更容易,所以这里有一个解决方案: SOUR

我正在尝试编写一个makefile,它执行以下操作:

%-foo-(k).out : %-foo-(k-1).out
    # do something, e.g.
    cat $< $@
会有用的


如果有这样的事情,我可以用多个茎干来做。。。在(gnu)make中做这类事情的另一种方法是什么?

做这样的事情没有简单的方法。基本上有两个选项:可以使用自动生成的makefile,也可以使用
$(eval…
)。对我来说,自动生成的makefiles更容易,所以这里有一个解决方案:

SOURCELIST = blah/bleh-foo-1.out

all:

-include generated.mk

generated.mk: Makefile
        for f in $(SOURCELIST); do \
            n=`echo "$$f" | sed -n 's/.*-\([0-9]*\)\.out$/\1/p'`; \
            echo "$${f%-foo-[0-9]*.out}-foo-`expr $$n + 1`.out: $$f ; cat $$< > $$@"; \
        done > $@
SOURCELIST=blah/bleh-foo-1.out
全部:
-包括生成的.mk
generated.mk:Makefile
对于f,单位为美元(SOURCELIST);做\
n=`echo“$$f”| sed-n's/*-\([0-9]*\)\。out$/\1/p'`\
echo“$${f%-foo-[0-9]*.out}-foo-`expr$$n+1`.out:$$f;cat$<>$@”\
完成>$@

这还不错。不过,这确实让我觉得我应该使用比make更灵活的东西。它可能是。我很想知道您是否找到了足够灵活的方法,允许您定义任意的“类似模式”的规则,这些规则不需要为每个目标/先决条件提供明确的语句,特别是当更改涉及到“x-1”之类的数学表达式时(如果您愿意显式地列出它们,那么您可以在make中非常简单地做到这一点:这只是一个通用规则能够构建所有目标/先决条件组合的要求,这使得它很棘手)。
SOURCELIST = blah/bleh-foo-1.out

all:

-include generated.mk

generated.mk: Makefile
        for f in $(SOURCELIST); do \
            n=`echo "$$f" | sed -n 's/.*-\([0-9]*\)\.out$/\1/p'`; \
            echo "$${f%-foo-[0-9]*.out}-foo-`expr $$n + 1`.out: $$f ; cat $$< > $$@"; \
        done > $@