Para projetos simples, o que os makefiles oferecem sobre os scripts bash “simples”?

7

Por exemplo, se eu estiver desenvolvendo um site somente de front-end, eu posso ter vários arquivos CoffeeScript , vários Arquivos Sass , vários arquivos HTML e algumas imagens.

Os arquivos CoffeeScript precisam ser compilados em JavaScript, os arquivos Sass precisam ser compilados em CSS e esses novos arquivos precisam ser reduzidos. As imagens precisam de seus metadados removidos. Todos os arquivos resultantes precisam ser movidos para um novo diretório com sua própria estrutura.

Nada disso parece particularmente complicado, mas eu vi várias pessoas usar makefiles para isso.

Estou sendo muito relutante em aprender a usar makefiles? Quais vantagens eles poderiam oferecer sobre um simples script bash?

    
por Closure Cowboy 30.05.2011 / 22:31

2 respostas

6

Então, você está certo de que isso não é uma tarefa enorme, as vantagens oferecidas pelo make agora são

  • Como Ignacio diz que make é um edifício paralelo. Use o sinalizador -j .

  • Se você expressou suas dependências corretamente, nunca recria as coisas que não são necessárias. Claro, você pode conseguir isso em um script bash, mas isso significa adicionar complexidade ao script (e eu teria que ler a man page para lembrar como) o que você já sabe sobre isso.

  • Você pode definir regras genéricas (regras de sufixo (estilo antigo) ou regras de padrão (preferidas no make GNU)) que funcionam em todos os arquivos do tipo Barra que precisam ser criados a partir do tipo Foo. Novamente, um loop irá lidar com isso no bash, mas já sabe como fazer isso.

Mas a vantagem grande é: se a tarefa se tornar mais complicada, o makefile crescerá de forma lenta e simples, enquanto o script pode se insuflar inesperadamente.

Se você pode programar (mais ou menos) você pode gerenciar make (achava que a linguagem pode ser um pouco estranha no começo).

    
por 31.05.2011 / 03:09
4

Makefiles permitem fácil paralelização. Como make é (feito) ciente das dependências, ele pode organizar os jobs de tal maneira que todos os núcleos no sistema sejam usados da forma mais eficiente possível.

    
por 30.05.2011 / 22:34

Tags