Нашел интересную "особенность" make
DIR_INPUT=/test test: # testing date (it should be yesterday) test ! -z "${DATE}" ls -lad ${DIR_INPUT}/{a,c}
но вроде как-то странно работает:
PROMPT# make test # testing date (it should be yesterday) test ! -z "20100120" ls -lad /test/{a,c} /test/{a,c}: No such file or directory *** Error code 2 make: Fatal error: Command failed for target `test' PROMPT#
конечно, если я выдам ls -lad / test / {a, c} из моей оболочки работает.
Вопрос: как сделать так, чтобы программа make оценивала этот шаблон, как это сделала бы оболочка?
Вы можете сделать это с помощью функции оболочки, $ (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$