Расширение шаблона оболочки 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$