1

私のMakefileにはパターンルールがあります

%.out: %.in
        myscript $< $@

quux.inこのルールは、ファイルまたはfoobar.inが変更されたときだけでなく、ファイルquux/*またはfoobar/*(それぞれ) が変更されたときにもトリガーされるようにしたいと考えています。

(GNU) Makefile でそのような依存関係をどのように表現できますか?

4

2 に答える 2

0

これはどう?次のような変数を使用することもできます。

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 $< $@
于 2013-07-20T05:06:30.570 に答える
0

私はこの解決策を見つけました:

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

find = $(foreach dir,$(1),$(foreach d,$(wildcard $(dir)/*),$(call find,$(d),$(2))) $(wildcard $(dir)/$(strip $(2))))

再帰ワイルドカードfind関数はhttps://plus.google.com/101663514639216293981/posts/h5Xr1i8kgfuから来ています。

于 2013-08-10T10:10:17.973 に答える