makefile expansão do padrão shell: como?

2

Eu encontrei um "recurso" interessante de make

DIR_INPUT=/test
test:
        # testing date (it should be yesterday)
        test ! -z "${DATE}"
        ls -lad ${DIR_INPUT}/{a,c}

mas parece funcionar de uma forma estranha:

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#

claro, se eu emitir ls -lad / test / {a, c} dos meus trabalhos de shell.

Pergunta: como posso fazer para avaliar este padrão como o shell faria?

    
por asdmin 04.03.2010 / 16:18

1 resposta

3

Você pode fazer isso usando a função shell, $ (shell touch {a..c}), (Talvez a função wildcard também?):

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$
    
por 04.03.2010 / 16:45