Documentation for a newer release is available. View Latest

Eines de Desenvolupament

GNU make 4.3

GNU make 4.3 inclou moltes correccions d’errors, noves característiques i millores de rendiment.

Incompatibilitat amb versions anteriors

Els pedaços de compatibilitat per fer la versió 3.8 s’eliminen en aquesta versió, fent que el make de Fedora sigui el mateix que altres distribucions.

Els propietaris de paquets que depenen de característiques de makefile específiques de versions anteriors de GNU make (incloent-hi els pedaços de compatibilitat per a la 3.8 que eliminem) poden fallar en compilar (FTBFS) i necessitaran modificar els seus Makefiles. Els paquets que es van compilar abans d’aquesta actualització no es veuran afectats.

Incompatibilitat específica amb versions anteriors:

* ADVERTÈNCIA: Incompatibilitat amb versions anteriors!
  Els signes de número (#) que apareixen dins d'una referència de macro o invocació de funció
  ja no introdueixen comentaris i no s'han d'escapar amb barres invertides:
  per tant, una crida com ara:
    foo := $(shell echo '#')
  és legal. Anteriorment, el signe de número necessitava ser escapat, per exemple:
    foo := $(shell echo '\#')
  Ara, això últim es resoldrà com a "\#". Si voleu escriure makefiles
  portables a ambdues versions, assigneu el signe de número a una variable:
    H := \#
    foo := $(shell echo '$H')
  Es va afirmar que això s'havia arreglat a la 3.81, però no va ser així, per algun motiu.
  Per detectar aquest canvi, cerqueu 'nocomment' a la variable .FEATURES.

* ADVERTÈNCIA: Incompatibilitat amb versions anteriors!
  Anteriorment, afegir utilitzant '+=' a una variable buida donaria lloc a un valor
  que començava amb un espai. Ara l'espai inicial només s'afegeix si la variable
  ja conté algun valor. De manera similar, afegir una cadena buida no
  afegeix un espai final.

Noves característiques

  • Objectius explícits agrupats Les regles de patró sempre han tingut la capacitat de generar múltiples objectius amb una sola invocació de la recepta. Ara és possible declarar que una regla explícita genera múltiples objectius amb una sola invocació. Per utilitzar això, substituïu el testimoni : per &: a la regla. Per detectar aquesta característica, cerqueu grouped-target a la variable especial .FEATURES.

  • Variable .EXTRA_PREREQS Les paraules d’aquesta variable es consideren requisits previs dels objectius, però no s’afegeixen a cap dels valors de variables automàtiques en expandir la recepta. Aquesta variable pot ser global (s’aplica a tots els objectius) o una variable específica de l’objectiu. Per detectar aquesta característica, cerqueu extra-prereqs a la variable especial .FEATURES.

  • Els Makefiles ara poden especificar l’opció -j a la seva variable MAKEFLAGS i això farà que make habiliti aquest mode de paral·lelisme.

  • GNU make ara utilitzarà posix_spawn() en sistemes on estigui disponible. Si preferiu utilitzar fork/exec fins i tot en sistemes on posix_spawn() està present, podeu utilitzar l’opció --disable-posix-spawn per configurar.

  • Els missatges d’error impresos en invocar ordres inexistents s’han netejat i fet coherents.

  • S’ha afegit una nova opció --no-silent, que cancel·la l’efecte de la bandera -s/--silent/--quiet.

  • S’ha afegit una nova opció -E com a àlies curt per a --eval.

  • Interoperar amb biblioteques d’execució C GNU libc i musl més noves.

Consulteu l’anunci de la versió upstream per obtenir informació més detallada sobre aquesta versió.

Errors corregits

Una llista completa d’errors corregits en aquesta versió està disponible aquí make - Errors