扩展依赖关系&x27;Makefile通配符的dirname

扩展依赖关系&x27;Makefile通配符的dirname,makefile,Makefile,从,它生活在这个。我想将Javascript示例作为依赖项包含在生成的HTML文档中 INFILES = $(shell find . -name "index.src.html") OUTFILES = $(INFILES:.src.html=.html) TEMP:= $(shell mktemp -u /tmp/specs.XXXXXX) all: $(OUTFILES) # Problem line: %.html: %.src.html $(wildcard contacts/*j

从,它生活在这个。我想将Javascript示例作为依赖项包含在生成的HTML文档中

INFILES = $(shell find . -name "index.src.html")
OUTFILES = $(INFILES:.src.html=.html)
TEMP:= $(shell mktemp -u /tmp/specs.XXXXXX)

all: $(OUTFILES)

# Problem line:
%.html: %.src.html $(wildcard contacts/*js)
    @echo Dependencies: $^
    cd $(@D) && m4 -PEIinc index.src.html > $(TEMP)
    anolis --max-depth=3 $(TEMP) $@
    rm -f $(TEMP)

clean:
    rm -f $(OUTFILES)

PHONY: all clean
我希望
$(通配符联系人/*js)
成为
$(通配符$(@D)/*js)
$(通配符$(dirname%)/*js)
,但我尝试过的都不管用。必须有某种关键字才能获取目标或依赖项的父目录,这样我才能引用javascript依赖项。

AFAIK,使用
$(@D)
和其他内部先决条件列表只能使用GNU Make的功能实现

INFILES = $(shell find . -name "index.src.html")
OUTFILES = $(INFILES:.src.html=.html)
TEMP:= $(shell mktemp -u /tmp/specs.XXXXXX)

all: $(OUTFILES)

# Problem line:
%.html: %.src.html $(wildcard contacts/*js)
    @echo Dependencies: $^
    cd $(@D) && m4 -PEIinc index.src.html > $(TEMP)
    anolis --max-depth=3 $(TEMP) $@
    rm -f $(TEMP)

clean:
    rm -f $(OUTFILES)

PHONY: all clean
因此,您的问题可能可以通过以下方式解决:

.SECONDEXPANSION:
%.html: %.src.html $$(wildcard $$(@D)/*js)

但是,我不确定它是否能与模式规则一起工作。

Eclipse插件开发(只是为了好玩),你疯了吗P@hendry,是的,有时它会给你带来很多乐趣!:-)