继续Build script to Makefile之后的upstream location。我想将包含在此生成的HTML文档中的Javascript示例包含为依赖项。
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
我希望$(wildcard contacts/*js)
为$(wildcard $(@D)/*js)
或$(wildcard $(dirname %)/*js)
,但我尝试过的任何内容都无效。必须有某种关键字来获取目标或依赖项的父目录,以便我可以引用javascript依赖项。
答案 0 :(得分:5)
使用$(@D)
和其他automatic variables内部先决条件列表的AFAIK只能使用GNU Make的secondary expansion功能来实现。
因此,您的问题可能解决如下:
.SECONDEXPANSION:
%.html: %.src.html $$(wildcard $$(@D)/*js)
但是,我不确定它是否适用于模式规则。