make - Utilitário GNU Make para manter grupos de programas
SINTAXE
make [OPÇÃO]... [ALVO]...
DESCRIÇÃO
O utilitário make determinará automaticamente quais partes de um programa grande precisam ser recompiladas e emitirá os comandos para recompilá-las. O manual descreve a implementação GNU do make, que foi escrito por Richard Stallman e Roland McGrath, e atualmente é mantido por Paul Smith. Nossos exemplos mostram programas em C, pois são muito comuns, mas você pode usar make com qualquer linguagem de programação cujo compilador possa ser executado com um comando de shell. Na verdade, make não é limitado a programas. Você pode usá-lo para descrever qualquer tarefa em que alguns arquivos devem ser atualizados automaticamente a partir de outros sempre que os outros forem alterados.
Para se preparar para usar make, você deve escrever um arquivo chamado makefile que descreva os relacionamentos entre os arquivos em seu programa e forneça comandos para atualizar cada arquivo. Em um programa, tipicamente o arquivo executável é atualizado a partir de arquivos de objeto, que, por sua vez, são criados compilando arquivos de código-fonte.
Uma vez que um makefile adequado exista, sempre que você alterar alguns arquivos de código-fonte, este simples comando de shell:
make
é suficiente para executar todas as recompilações necessárias. O programa make usa a descrição do makefile
e os tempos de modificação dos arquivos para decidir quais dos arquivos precisam ser atualizados.
Para cada um desses arquivos, ele emite os comandos registrados no makefile.
make executa comandos no makefile para atualizar um ou mais alvos, onde alvo é tipicamente um
programa. Se nenhuma opção -f estiver presente, make procurará pelos makefiles GNUmakefile, makefile e
Makefile, nessa ordem.
Normalmente, você deve nomear seu makefile como makefile ou Makefile. (Recomendamos Makefile porque ele aparece proeminentemente perto do início de uma listagem de diretório, bem perto de outros arquivos importantes, como README.) O primeiro nome verificado, GNUmakefile, não é recomendado para a maioria dos makefiles. Você deve usar este nome se tiver um makefile que seja específico para GNU Make e não será entendido por outras versões de make. Se makefile for '-', a entrada padrão será lida.
make atualiza um alvo se ele depender de arquivos de pré-requisito que foram modificados desde que o alvo foi modificado pela última vez, ou se o alvo não existir.
OPÇÕES
-b, -m
Essas opções são ignoradas para compatibilidade com outras versões de make.
-B, --always-make
Force o recálculo de todos os alvos incondicionalmente.
-C dir, --directory=dir
Altere para o diretório dir antes de ler os makefiles ou fazer qualquer outra coisa. Se várias opções -C forem especificadas, cada uma é interpretada em relação à anterior: -C / -C etc. é equivalente a -C /etc. Isso é normalmente usado com invocações recursivas de make.
-d Imprima informações de depuração, além do processamento normal. As informações de depuração
dizem quais arquivos estão sendo considerados para recriação, quais tempos de arquivo estão sendo comparados
e com quais resultados, quais arquivos realmente precisam ser recriados, quais regras implícitas são consideradas e quais são aplicadas - tudo interessante sobre como make decide o que fazer.
--debug[=FLAGS]
Imprima informações de depuração, além do processamento normal. Se os sinalizadores forem omitidos, então o comportamento é o mesmo que se -d fosse especificado. FLAGS pode ser qualquer um ou todos os seguintes nomes, separados por vírgulas ou espaços. Apenas o primeiro caractere é significativo: o restante pode ser omitido: all para toda a saída de depuração (o mesmo que usar -d), basic para depuração básica, verbose para depuração básica mais detalhada, implicit para mostrar operações de pesquisa de regras implícitas, jobs para detalhes sobre a invocação de comandos, makefile para depuração durante a recriação de makefiles, print mostra todas as receitas que são executadas, mesmo que sejam silenciosas, e why mostra a razão pela qual make decidiu reconstruir cada alvo. Use none para desabilitar todos os sinalizadores de depuração anteriores.
-e, --environment-overrides
Dê às variáveis obtidas do ambiente precedência sobre as variáveis dos makefiles.
-E string, --eval=string
Execute o comando shell e, em seguida, continue.
-f file, --file=file
Use file como o makefile.
-i, --ignore-errors
Continue mesmo se um comando retornar um erro.
-I dir, --include-dir=dir
Adicione dir à lista de diretórios que serão pesquisados para arquivos include.
-j [n], --jobs[=n]
Execute n comandos em paralelo. Se n não for especificado, execute o máximo possível.
-k, --keep-going
Continue após um erro.
-l, --local-variables
Defina as variáveis localmente para o makefile em que são definidas.
-L, --library-dir=dir
Adicione dir à lista de diretórios que serão pesquisados para bibliotecas.
-m, --missing-makefile
Não interrompa se o makefile não for encontrado.
-n, --just-print
Imprima os comandos a serem executados, mas não os execute.
-o file, --output-file=file
Defina o nome do arquivo de saída.
-p, --print-data-base
Imprima o banco de dados de variáveis internas de make.
-q, --quiet
Suprima a maioria das mensagens.
-r, --recursive
Faça com que make seja executado recursivamente.
-R, --no-recursion
Não faça com que make seja executado recursivamente.
-s, --silent
Suprima todas as mensagens.
-S, --no-print-commands
Não imprima os comandos a serem executados.
-t, --touch
Atualize os alvos sem executar os comandos.
--trace
Imprima informações sobre a disposição de cada alvo (por que o alvo está sendo reconstruído e quais comandos são executados para reconstruí-lo).
-v, --version
Imprima a versão do programa make, além de um aviso de direitos autorais, uma lista de autores e um aviso de que não há garantia.
-w, --print-directory
Imprima uma mensagem contendo o diretório de trabalho antes e depois de outros processamentos. Isso pode ser útil para rastrear erros de ninhos complicados de comandos make recursivos.
--no-print-directory
Desative -w, mesmo que tenha sido ativado implicitamente.
--shuffle[=MODE]
Habilite a mistura da ordem dos alvos e pré-requisitos. MODE é um de none para desativar o modo de mistura,
random para misturar os pré-requisitos em ordem aleatória, reverse para considerar os pré-requisitos em
ordem inversa ou um inteiro
-W file, --what-if=file, --new-file=file, --assume-new=file
Finja que o arquivo alvo foi modificado. Quando usado com o sinalizador -n, isso mostra o que aconteceria se você modificasse esse arquivo. Sem -n, é quase o mesmo que executar um comando touch no arquivo fornecido antes de executar make, exceto que o tempo de modificação é alterado apenas na imaginação de make.
STATUS DE SAÍDA
GNU Make sai com um status de zero se todos os makefiles foram analisados com sucesso e nenhum dos alvos que foram construídos falhou. Um status de um será retornado se o sinalizador -q for usado e make determinar que um alvo precisa ser reconstruído. Um status de dois será retornado se ocorrerem quaisquer erros.
VEJA TAMBÉM
A documentação completa para make é mantida como um manual Texinfo. Se os programas info e make estiverem instalados corretamente em seu site, o comando
info make
deve fornecer acesso ao manual completo.
ERROS
Veja o capítulo "``Problemas e erros''" no Manual GNU Make.
AUTOR
Esta página de manual foi contribuída por Dennis Morse da Universidade de Stanford. Atualizações adicionais contribuídas por Mike Frysinger. Foi refeito por Roland McGrath. Mantido por Paul Smith.
DIREITOS AUTORAIS
Copyright © 1992-1993, 1996-2023 Free Software Foundation, Inc. Este arquivo faz parte do GNU Make.
GNU Make é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da GNU General Public License, conforme publicada pela Free Software Foundation; versão 3 da Licença ou (à sua opção) qualquer versão posterior.
GNU Make é distribuído na esperança de que será útil, mas SEM NENHUMA GARANTIA; sem até mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM PROPÓSITO PARTICULAR. Veja o GNU General Public License para mais detalhes.
Você deve ter recebido uma cópia da GNU General Public License junto com este programa. Se não, veja https://www.gnu.org/licenses/.