makefile - 为 Makefile 通配符扩展依赖项的目录名

标签 makefile

Build script to Makefile 开始, 住在这 upstream location .我想将 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

我希望 $(wildcard contacts/*js)$(wildcard $(@D)/*js)$(wildcard $( dirname %)/*js),但我没有尝试过。必须有某种关键字来获取目标或依赖项的父目录,以便我可以引用 javascript 依赖项。

最佳答案

据我所知,使用 $(@D) 和其他 automatic variables内部先决条件列表只能使用 secondary expansion 实现GNU Make 的特性。

那么,你的问题大概可以这样解决:

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

但是,我不确定它是否适用于模式规则。

关于makefile - 为 Makefile 通配符扩展依赖项的目录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891234/

相关文章:

c++ - Makefile 变量问题,make 想要创建 "*.o"而不是 foo.o bar.o 等

c - 是否可以使用CC编译器编译多个目标文件?

c++ - 如何使用 MSVC 构建 Gnuplot? (syscfg.h(377) : error)

c++ - 直接用gtest_main.a?

c++ - 如何在 C++ 中使用 FANN

docker - 如何在docker build中进行配置,制作和安装

linux - 使 MahApp 需要 : No rule to make target 'part2.d' ,

c++ - Vc++/c++ Force Include Header 异常

c++ - makefile 中的多个 gcc 版本

c - Makefile 子目录