Documentation for a newer release is available. View Latest

Ferramentas de Desenvolvimento

GNU make 4.3

GNU make 4.3 inclui muitas correções de bugs, novos recursos e melhorias de desempenho.

Incompatibilidade com versões anteriores

Os patches de compatibilidade para a versão 3.8 foram removidos nesta versão, fazendo com que o Fedora seja igual a outras distros.

Mantenedores de pacotes que dependem de recursos de makefile específicos para versões mais antigas do GNU make (incluindo patches de compatibilidade para 3.8 que estamos descartando) podem usar FTBFS e precisar ajustar seus Makefiles. Os pacotes que foram compilados antes desta atualização não serão afetados.

Incompatibilidade específica com versões anteriores:

* AVISO: Incompatibilidade com versões anteriores!
   Sinais numéricos (#) aparecendo dentro de uma referência de macro ou invocação de função
   não introduz mais comentários e não deve ser escapado com barras invertidas:
   portanto, uma chamada como:
     foo := $(shell echo '#')
   é válida. Anteriormente, o sinal numérico precisava ser escapado, por exemplo:
     foo := $(shell echo '\#')
   Agora, este último será resolvido como "\#".  Se você quiser escrever makefiles
   portáteis para ambas as versões, atribua o sinal numérico a uma variável:
     H:= \#
     foo := $(shell echo '$H')
   Foi alegado que isso foi corrigido no 3.81, mas não foi, por algum motivo.
   Para detectar esta alteração, procure por 'nocomment' na variável .FEATURES .

* AVISO: Incompatibilidade com versões anteriores!
   Anexar anteriormente usando '+=' a uma variável vazia resultaria em um valor
   começando com um espaço. Agora o espaço inicial só é adicionado se a variável
   já contém algum valor. Da mesma forma, anexar uma string vazia não
   adiciona um espaço à direita.

Novos recursos

  • Alvos explícitos agrupados As regras padrão sempre tiveram a capacidade de gerar múltiplos alvos com uma única invocação da receita. Agora é possível declarar que uma regra explícita gera múltiplos alvos com uma única invocação. Para usar isso, substitua o token : por &: na regra. Para detectar este recurso, procure por grouped-target na variável especial .FEATURES.

  • Variável .EXTRA_PREREQS As palavras nesta variável são consideradas pré-requisitos dos alvos, mas não são adicionadas a nenhum dos valores da variável automática ao expandir a receita. Esta variável pode ser global (aplica-se a todos os destinos) ou uma variável específica do destino. Para detectar este recurso, procure por extra-prereqs na variável especial .FEATURES.

  • Makefiles agora podem especificar a opção -j em sua variável MAKEFLAGS e isso fará com que o make habilite esse modo de paralelismo.

  • GNU make agora usará posix_spawn() em sistemas onde estiver disponível. Se você preferir usar fork/exec mesmo em sistemas onde posix_spawn() está presente, você pode usar a opção --disable-posix-spawn para configurar.

  • As mensagens de erro impressas ao invocar comandos inexistentes foram limpas e tornadas consistentes.

  • Uma nova opção --no-silent foi adicionada, que cancela o efeito do sinalizador -s/--silent/--quiet.

  • Uma nova opção -E foi adicionada como um alias curto para --eval.

  • Interoperabilidade com bibliotecas de tempo de execução GNU libc e musl C mais recentes.

Consulte o link: anúncio de lançamento upstream para obter informações mais detalhadas sobre este lançamento.

Bugs corrigidos

Uma lista completa de bugs corrigidos nesta versão está disponível aqui make - Bugs