Расширение dirname зависимости для подстановочного знака Makefile - PullRequest
3 голосов
/ 17 января 2012

После Сценарий сборки для 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.

1 Ответ

5 голосов
/ 17 января 2012

AFAIK, используя $(@D) и другие автоматические переменные внутри списка предпосылок, можно достичь только с помощью вторичного расширения функции GNU Make.

Таким образом, вашВероятно, проблему можно решить следующим образом:

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

Однако я не уверен, будет ли она работать с шаблонными правилами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...