A finalidade do utilitário make é determinar automaticamente quais partes de um programa grande precisam ser recompiladas e emitir os comandos para recompilá-los. O manual descreve a implementação GNU do make, que foi escrita por Richard Stallman e Roland McGrath. Esses exemplos mostram programas em C, já que são mais comuns, mas você pode usar make com qualquer linguagem de programação cujo compilador possa ser executado com um comando shell. De fato, o make não se limita aos programas. Você pode usá-lo para descrever qualquer tarefa na qual alguns arquivos devem ser atualizados automaticamente de outras pessoas sempre que os outros forem alterados.
Nota: Esta página é um extrato da documentação do GNU make . Ele é atualizado apenas ocasionalmente porque o projeto GNU não usa nroff. Para documentação completa e atual, consulte o arquivo de informações make.info que é feito a partir do arquivo fonte do Texinfo, make.texinfo.
Sintaxe e preparação do utilitário make
faço -f makefile opção … alvo …
Para se preparar para usar o make, você deve gravar um arquivo chamado makefile, que descreve os relacionamentos entre os arquivos do programa e os comandos para atualizar cada arquivo. Normalmente, um arquivo executável é atualizado a partir de arquivos de objeto, que são, por sua vez, compilados por arquivos de origem.
Uma vez que existe um makefile adequado, cada vez que você alterar alguns arquivos fonte, este simples comando shell faço é suficiente para realizar todas as recompilações necessárias. O programa make usa o banco de dados makefile e os horários de última modificação dos arquivos para decidir quais arquivos precisam ser atualizados. Para cada um desses arquivos, ele emite os comandos registrados no banco de dados.
O utilitário make executa comandos no makefile para atualizar um ou mais nomes de destino, onde nome é tipicamente um programa. Se não-f opção está presente, make irá procurar pelos makefilesGNUmakefile, makefileeMakefile, naquela ordem.
Normalmente você deve chamar seu makefile makefile ou Makefile. (Recomenda-se usar o Makefile porque aparece em destaque perto do início de uma listagem de diretórios, bem perto de outros arquivos importantes, comoREADME.) O primeiro GNUmakefile com nome marcado, não é recomendado para a maioria dos makefiles. Você deve usar este nome se tiver um makefile específico para o GNU make e não será entendido por outras versões do make. Se makefile é -, a entrada padrão é lida.
o faço O utilitário atualiza um destino se ele depender de arquivos de pré-requisitos que foram modificados desde a última modificação do destino ou se o destino não existir.
Opções
o -b e -m opções são ignoradas para compatibilidade com outras versões do make.
-C dir irá mudar para dir diretório antes de ler os makefiles ou fazer qualquer outra coisa. Se vários-C opções são especificadas, cada uma é interpretada em relação à anterior:-C/ -C é equivalente a-C / etc. Isso é normalmente usado com invocações recursivas de make.
o -d opção irá imprimir informações de depuração, além do processamento normal. As informações de depuração dizem quais arquivos estão sendo considerados para refazer, quais tempos de arquivo estão sendo comparados e com quais resultados, quais arquivos realmente precisam ser refeitos, quais regras implícitas são consideradas e quais são aplicadas - tudo interessante sobre como decidir o que fazer .
o -e opção fornece variáveis retiradas da precedência de ambiente sobre variáveis de makefiles.
o -f Arquivo opção usa Arquivo como um makefile.
o -Eu opção ignora todos os erros nos comandos executados para refazer arquivos.
o -EU dir opção especifica um diretório dir para procurar makefiles incluídos. Se vários-EU opções são usadas para especificar vários diretórios, os diretórios são pesquisados na ordem especificada. Ao contrário dos argumentos para outras bandeiras de marca, diretórios dados com-EU bandeiras podem vir diretamente após a bandeira:-Idir é permitido, bem como-I dir . Esta sintaxe é permitida para compatibilidade com o pré-processador de C-EU bandeira.
o -j empregos option especifica o número de jobs (comandos) a serem executados simultaneamente. Se houver mais de um-j opção, o último é eficaz. Se o-j opção é dada sem um argumento, make não limitará o número de trabalhos que podem ser executados simultaneamente.
o -k opção continua o máximo possível após um erro; enquanto o destino que falhou e aqueles que dependem dele não podem ser refeitos, as outras dependências desses destinos podem ser processadas da mesma forma.
o -eu e carga -l As opções especificam que nenhum novo job (comando) deve ser iniciado se houver outros jobs em execução e a média da carga for pelo menoscarga (um número de ponto flutuante). Sem argumento, remove um limite de carga anterior.
o -n opção imprime os comandos que seriam executados, mas não os executa.
o -o Arquivo opção não refaz o Arquivo mesmo que seja mais antigo que suas dependências, e não refaça nada por conta de mudanças Arquivo . Essencialmente, o arquivo é tratado como muito antigo e suas regras são ignoradas.
o -p opção imprime o banco de dados (regras e valores de variáveis) que resulta da leitura dos makefiles. Em seguida, ele é executado normalmente ou conforme especificado.Isso também imprime as informações de versão fornecidas pelo-v interruptor (veja abaixo). Para imprimir o banco de dados sem tentar refazer nenhum arquivo, usefaço -p -f / dev / null .
o -q opção define o modo de pergunta. Não execute nenhum comando ou imprima nada, apenas retorne um status de saída que seja zero se os destinos especificados já estiverem atualizados, diferente de zero.
o -r opção elimina o uso das regras implícitas incorporadas. Também limpa a lista padrão de sufixos para regras de sufixo.
o -s opção silencia a operação. Não imprime os comandos como eles são executados.
o -S opção cancela o efeito do-k opção. Isso nunca é necessário, exceto em um make recursivo Onde-k pode ser herdado da marca de nível superior via MAKEFLAGS ou se você definir-k em MAKEFLAGS em seu ambiente.
o -t Opção toca arquivos (marca-os atualizados sem realmente alterá-los) em vez de executar seus comandos. Isto é usado para fingir que os comandos foram feitos, a fim de enganar futuras invocações de make.
o -v opção imprime a versão do programa make mais direitos autorais, uma lista de autores e um aviso de que não há garantia.
o -W opção imprime uma mensagem contendo o diretório de trabalho antes e depois de outro processamento. Isso pode ser útil para rastrear erros de ninhos complicados de marcas recursivas comandos.
o -W Arquivo opção finge que o alvo Arquivo acaba de ser modificado. Quando usado com o-n flag, isso mostra o que aconteceria se você modificasse esse arquivo. Sem-n, é quase o mesmo que executar umtocar comando no arquivo dado antes de executar make, exceto que o tempo de modificação é alterado apenas na imaginação do make.