Formatação de Makefile
Guia
Formatação de Makefile
Cole seu Makefile no painel de entrada — ou clique
Como usar
- Cole seu Makefile no painel de entrada — ou clique Tente um exemplo para carregar um exemplo com problemas intencionais.
- Escolha a largura do tab (usada para detectar linhas indentadas que deveriam ser tabs).
- Alternar as opções de limpeza: converter espaços em tabs nas linhas de receita, remover espaços em branco no final, normalizar sequências de linhas em branco, normalizar o espaçamento de atribuições e, opcionalmente, alinhar atribuições consecutivas de variáveis.
- Revise a resumo dos problemas e a lista de correções por linha, depois copie ou baixe o Makefile formatado.
Características
- Reparo de tabs em receitas – converte linhas de receita indentadas com espaços em linhas indentadas com tabs (o único tipo de indentação aceito pelo GNU make).
- Classificação inteligente de linhas – distingue alvos, atribuições de variáveis, condicionais (
ifeq,else,endif), diretivas (include,vpath,export) e linhas de receita. - Espaçamento de atribuições – normaliza os espaços ao redor de
=,:=,::=,?=,+=e, e!=. - Alinhamento opcional de colunas – alinha atribuições consecutivas de variáveis na mesma coluna do operador para melhor legibilidade.
- Relatório de problemas – cada correção é mostrada com o número da linha de origem para que você possa verificar as mudanças.
- Segurança de blocos definidos – o conteúdo entre
defineeendefé preservado exatamente. - Totalmente no lado do cliente – seu Makefile nunca sai do navegador.
Perguntas frequentes
-
Por que o GNU make exige tabs nas linhas de receita?
O parser do Make usa um único caractere de tab como prefixo unívoco que marca uma linha como parte da receita de uma regra. Essa escolha data da primeira versão pública do make em 1977 e foi consolidada porque os tabs eram um sinal confiável, que aparecia no início da linha e não colidiria com espaços dentro de atribuições de variáveis ou definições de alvos. Mesmo causando confusão por décadas, mudar essa regra silenciosamente quebraria milhões de Makefiles existentes, por isso o GNU make mantém o tab como o padrão RECIPEPREFIX.
-
Qual a diferença entre =, :=, ::=, ?=, += e != em Makefiles?
Atribuição recursiva (=) adia a expansão até que a variável seja usada, então as variáveis referenciadas são pesquisadas no momento do uso. Atribuição simples (:=) e atribuição simples POSIX (::=) expandem o lado direito imediatamente, então o valor é fixo no momento da definição. Atribuição condicional (?=) define a variável apenas se ela estiver atualmente indefinida, o que é útil para valores padrão que podem ser sobrescritos pelo ambiente. Atribuição de anexação (+=) adiciona ao valor existente, preservando o comportamento recursivo ou simples do original. Atribuição de shell (!=) executa o lado direito como um comando de shell e armazena a saída resultante, semelhante a backticks em shell.
-
Qual a diferença entre uma linha de receita e uma linha de continuação?
Uma linha de receita é a linha indentada que executa como parte das ações de uma regra; no make padrão, ela deve começar com um caractere de tab. Uma linha de continuação é qualquer linha cuja linha anterior termina com um caractere de barra invertida, que logicamente une as duas linhas em uma. As linhas de continuação herdam o contexto da linha anterior, então uma continuação de receita continua sendo uma receita e uma continuação de atribuição continua sendo uma atribuição. A indentação de uma linha de continuação é apenas estética e não altera como o make a analisa.
-
Por que são necessárias as alvos .PHONY e como elas afetam a análise?
A declaração .PHONY informa o make que os nomes listados não são arquivos reais, mas rótulos de ação, então o make deve sempre executar suas receitas, independentemente de qualquer arquivo com o mesmo nome no diretório de trabalho. Sem isso, um arquivo chamado clean desativaria automaticamente o comando make clean porque o make consideraria o alvo atualizado. O .PHONY não altera as regras de análise de receitas ou de indentação — as linhas de receita sob alvos .PHONY ainda devem começar com um caractere de tab — mas altera a lógica de comparação de timestamps, para que a receita seja considerada fora de data em cada chamada.
Instale nossas extensões
Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida
恵 O placar chegou!
Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!
Ferramentas essenciais
Ver tudo Novas chegadas
Ver tudoAtualizar: Nosso ferramenta mais recente was added on Mai 21, 2026
