Расширение шаблона оболочки makefile: как?

Я нашел интересную "особенность" марки

DIR_INPUT=/ испытание
тестовое задание:
        # дата тестирования (должно быть вчера)
        тестовое задание! -z "${DATE}"
        ls -lad ${DIR_INPUT}/{a,c}

но, похоже, работает странным образом:

PROMPT # сделать тест
# дата тестирования (должно быть вчера)
тестовое задание! -z "20100120"
ls -lad /test/{a,c}
/test/{a,c}: нет такого файла или каталога
*** Код ошибки 2
make: фатальная ошибка: команда не выполнена для целевого `test'
НЕЗАМЕДЛИТЕЛЬНЫЙ#

конечно, если я выдам команду ls -lad / test / {a, c} из моей оболочки.

Вопрос: как мне получить make для оценки этого паттерна, как это сделает оболочка?

1 ответ

Решение

Вы можете сделать это, используя функцию оболочки $(shell touch {a..c}), (Может быть, также подстановочную функцию?):

kbrandt@kbrandt-opadmin:~/scrap/make$ ls
foo
kbrandt@kbrandt-opadmin:~/scrap/make$ vim foo
kbrandt@kbrandt-opadmin:~/scrap/make$ ls
foo
kbrandt@kbrandt-opadmin:~/scrap/make$ cat foo
files:
    $(shell touch {a..c})
kbrandt@kbrandt-opadmin:~/scrap/make$ make -f foo
make: `files' is up to date.
kbrandt@kbrandt-opadmin:~/scrap/make$ ls
a  b  c  foo
kbrandt@kbrandt-opadmin:~/scrap/make$
Другие вопросы по тегам