Makefile 不同文件具有不同依赖关系的模式规则

Makefile 不同文件具有不同依赖关系的模式规则,makefile,Makefile,在我的Makefile中,我有一个模式规则 %.out: %.in myscript $< $@ %.out:%.in myscript$

在我的Makefile中,我有一个模式规则

%.out: %.in
        myscript $< $@
%.out:%.in
myscript$<$@
我希望不仅当文件
qux.in
foobar.in
被修改时,而且当任何文件
qux/*
foobar/*
被修改时,都会触发此规则


如何在(GNU)Makefile中表达这种依赖?

如何?您甚至可以有如下变量:

DIR_LIST = quux foobar home france china mexico mars
%.out: %.in
    myscript $< $@
$(foreach dir,${DIR_LIST},${dir})/%.out: $(foreach dir,${DIR_LIST},${dir})/%.in
    myscript $< $@ 

OR.....

%.out: %.in
    myscript $< $@
quux/%.out: quux/%.in
    myscript $< $@
foobar/%.out: foobar/%.in
    myscript $< $@
法国中国墨西哥火星之家 %.out:%.in myscript$<$@ $(foreach dir,${dir\u LIST},${dir})/%输出:$(foreach dir,${dir\u LIST},${dir})/%输入 myscript$<$@ 或 %.out:%.in myscript$<$@ quux/%.out:quux/%.in myscript$<$@ foobar/%.out:foobar/%.in myscript$<$@ 我找到了这个解决方案:

.SECONDEXPANSION:
%.out: %.in $$(call find, $(basename %), *)
    my_script $< $@

find = $(foreach dir,$(1),$(foreach d,$(wildcard $(dir)/*),$(call find,$(d),$(2))) $(wildcard $(dir)/$(strip $(2))))
。第二次扩展:
%.out:%.in$$(调用find,$(basename%),*)
我的脚本$<$@
find=$(foreach dir,$(1),$(foreach d,$(通配符$(dir)/*),$(调用find,$(d),$(2))$(通配符$(dir)/$(strip$(2)))

递归通配符
find
函数来自。

否,因为没有固定数量的此类文件和关联目录。@giole类似的东西怎么样!?(检查上面的编辑)对不起,我再也没有回来过!。。。。我真的很忙,忘了!英雄联盟