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

发布于 2024-12-27 07:11:42 字数 888 浏览 0 评论 0 原文

将脚本构建到 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/*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 依赖项。

Following on from Build script to Makefile, which lives in this upstream location. I want to include the Javascript examples that are included into this generated HTML document as dependencies.

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

I want $(wildcard contacts/*js) to be $(wildcard $(@D)/*js) or $(wildcard $(dirname %)/*js), but nothing I've tried works. There must be some sort of keyword to get the parent directory of the target or dependency so I can reference the javascript dependencies.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柳若烟 2025-01-03 07:11:42

AFAIK,使用 $(@D) 和其他 二次扩展 功能。

因此,您的问题可能可以按如下方式解决:

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

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

AFAIK, using $(@D) and other automatic variables inside list of prerequisites can only be achieved using secondary expansion feature of GNU Make.

Thus, your problem probably can be solved as follows:

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

However, I'm not sure whether it will work with pattern rules.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文