Documentation for a newer release is available. View Latest

Strumenti di sviluppo

GNU make 4.3

GNU make 4.3 include numerose correzioni di bug, nuove funzionalità e miglioramenti delle prestazioni.

Incompatibilità all’indietro

Le patch di compatibilità per rendere make versione 3.8 sono state rimosse in questo rilascio, rendendo la versione di make in Fedora identica a quella delle altre distribuzioni.

I proprietari di pacchetti che si affidano a funzionalità dei makefile specifiche per le versioni più vecchie di GNU make (incluse le patch di compatibilità per la versione 3.8 che stiamo rimuovendo) potrebbero riscontrare un errore di compilazione (FTBFS) e dover modificare i propri Makefile. I pacchetti compilati prima di questo aggiornamento non saranno influenzati.

Incompatibilità specifica all’indietro:

ATTENZIONE: Incompatibilità con le versioni precedenti!

I simboli cancelletto (#) che appaiono all'interno di un riferimento a una macro o di un'invocazione di funzione non introducono più commenti e non devono essere preceduti dal backslash:
pertanto una chiamata come:
foo := $(shell echo '#')
è lecita. In precedenza, il simbolo cancelletto doveva essere preceduto dal carattere di escape, ad esempio:
foo := $(shell echo '\#')
Ora quest'ultima versione risulterà in \#. Se vuoi scrivere dei Makefile portabili su entrambe le versioni, assegna il simbolo cancelletto a una variabile:
H := \#
foo := $(shell echo '$H')
Si sosteneva che questo problema fosse stato risolto nella versione 3.81, ma per qualche ragione non fu così.
Per rilevare questo cambiamento, cerca la stringa nocomment nella variabile .FEATURES.

AVVISO: Incompatibilità con le versioni precedenti!
In precedenza, l'aggiunta tramite += a una variabile vuota produceva un valore che iniziava con uno spazio. Ora, lo spazio iniziale viene aggiunto solo se la variabile contiene già un valore. Allo stesso modo, l'aggiunta di una stringa vuota non aggiunge uno spazio finale.

Nuove funzionalità

  • Le regole di pattern hanno sempre avuto la capacità di generare più target con una singola invocazione della ricetta. Ora è possibile dichiarare che anche una regola esplicita generi più target con una singola invocazione. Per utilizzare questa funzionalità, sostituisci il token : con &: nella regola. Per rilevare questa funzione, cerca grouped-target nella variabile speciale .FEATURES.

  • La variabile .EXTRA_PREREQS: le parole in questa variabile sono considerate prerequisiti dei target, ma non vengono aggiunte a nessuno dei valori delle variabili automatiche durante l’espansione della ricetta. Questa variabile può essere globale (applicata a tutti i target) o specifica per un singolo target. Per rilevare questa funzionalità, cerca extra-prereqs nella variabile speciale .FEATURES.

  • I Makefile possono ora specificare l’opzione -j nella variabile MAKEFLAGS; questo farà sì che make abiliti automaticamente la modalità parallela definita.

  • GNU make will now use posix_spawn() on systems where it is available. If you prefer to use fork/exec even on systems where posix_spawn() is present, you can use the --disable-posix-spawn option to configure.

  • I messaggi di errore visualizzati quando si invocano comandi inesistenti sono stati puliti e resi coerenti.

  • È stata aggiunta la nuova opzione --no-silent, che annulla l’effetto del flag -s/--silent/--quiet.

  • È stata aggiunta una nuova opzione --E`come alias breve per ----eval`.

  • Interoperare con le versioni più recenti delle librerie runtime C GNU libc e musl.

Consulta il annuncio del rilascio a monte per informazioni più dettagliate su questa versione.

Bug corretti

Un elenco completo dei bug risolti in questa versione è disponibile qui make - Bug