Pergunta

Um professor sysadmin me disse um dia que eu deveria aprender a usar o "make", porque eu poderia usá-lo para um monte de outras coisas que simplesmente desencadeantes complilations.

Eu nunca tive a chance de falar mais sobre isso. Você tem algum exemplo bom?

Como um bônus, não é esta ferramenta obsoleta, e quais são alternativas modernas (para efeitos de compilação e outros)?

Foi útil?

Solução

Faça pode ser usado para executar quaisquer comandos que você deseja executar. É melhor usado para atividades que requerem a verificação de dependência, mas não há nenhuma razão você não pode usar make para verificar seu e-mail, reiniciar seus servidores, backups marca, ou qualquer outra coisa.

Ant, NAnt e MSBuild são supostamente as alternativas modernas, mas plain-old-make ainda é amplamente utilizado em ambientes que não usam Java ou .NET.

Outras dicas

Uma coisa excelente make pode ser usado para além de compilação é LaTeX. Se você estiver fazendo um trabalho sério com o LaTeX, você encontrará make muito útil por causa da necessidade de re-interpretar .tex arquivos várias vezes ao usar BibTex ou tabelas de conteúdos.

Faça definitivamente não é obsoleto. Embora existam diferentes maneiras de fazer a mesma coisa (arquivos em lote no Windows, shell scripts em Linux) fazer trabalhos melhores, IMHO.

não é esta ferramenta deprecated

O que ?! Não, nem um pouco. Eu estou em Linux, então eu percebo que não sou uma pessoa média, mas eu usá-lo quase que diariamente. Estou certo de que há milhares de Linux devs que do usá-lo diariamente.

Eu lembro de ter visto um artigo sobre Slashdot alguns anos atrás descrevendo uma técnica para otimizar seqüência de inicialização Linux usando make .

edit:

Aqui está um artigo da IBM explicando o princípio.

executa fazer um topológica tipo , o que significa dizer que, dado um monte de coisas, e um conjunto de requisitos que uma coisa seja antes de outra coisa, ele encontra uma maneira de ordenar todas as coisas de modo que todos os requisitos sejam atendidos. Construir coisas (programas, documentos, tarballs de distribuição, etc.) é um uso comum para ordenação topológica, mas há outros. Você pode criar um Makefile com uma entrada para cada servidor no centro de dados, incluindo dependências entre servidores (NFS, NIS, DNS, etc.) e fazer posso dizer o que ordem em que para ligar os computadores depois de uma queda de energia, ou o fim de desligá-los antes de uma queda de energia. Você pode usá-lo para descobrir o que ordem em que para iniciar os serviços em um único servidor. Você pode usá-lo para descobrir o que para colocar suas roupas na parte da manhã. Qualquer problema onde você precisa encontrar uma ordem de um monte de coisas ou tarefas que satisfaz um monte de exigências específicas da forma A precede B é um candidato potencial para ser resolvido com o make.

O uso mais aleatória que eu já vi é ter de ser usado no lugar de festa para scripts de inicialização em BCCD . Ele realmente funcionou decentemente, uma vez que você tem sobre o momento wtf ....

Pense em fazer como shell scripts com oomph acrescentou.

Bem, eu tenho certeza que o UNIX função "make" ainda está sendo usado muito, mesmo se ele está diminuindo no mundo .Net. E enquanto mais pessoas podem estar usando MSBUILD, Formiga, nAnt, e outras ferramentas estes dias, eles são essencialmente apenas "make" com uma sintaxe de arquivo diferente. O conceito básico é o mesmo.

ferramentas tornam são úteis para qualquer coisa onde há um arquivo de entrada, que é transformado em um arquivo de saída. Escrever seus relatórios em MSWord, mas distribuí-los como PDFs? -. Fazer uso para gerar os PDFs

mudanças arquivo de configuração através de crontab, se necessário.

Eu tenho exemplos de mapas postfix, e para mesas externas squid.

Exemplo de / etc / sufixo / Makefile:

POSTMAP=/usr/sbin/postmap
POSTFIX=/usr/sbin/postfix

HASHES=transport access virtual canonical relocated annoying_senders
BTREES=clients_welcome

HASHES_DB=${HASHES:=.db}
BTREES_DB=${BTREES:=.db}

all: ${BTREES_DB} ${HASHES_DB} aliases.db
    echo \= Done

${HASHES_DB}: %.db: %
    echo . Rebuilding $< hash...
    ${POSTMAP} $<

${BTREES_DB}: %.db: %
    echo . Rebuilding $< btree...
    ${POSTMAP} $<

aliases.db: aliases
    echo . Rebuilding aliases...
    /usr/bin/newaliases

etc

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top