Hvad er en Makefile, og hvordan fungerer den inden for Linux?

Hvad er en Makefile, og hvordan fungerer den inden for Linux

Si ønsker at køre eller opdatere en opgave, når bestemte filer opdateres, gør værktøjet kan være nyttigt. Make-værktøjet kræver en fil, makefile, der definerer et sæt opgaver, der skal udføres.

Dette navn lyder velkendt for mange af jer, som De måske har brugt make til at kompilere et program ud fra kildekoden. De fleste open source-projekter bruger make til at kompilere en endelig eksekverbar binær, som kan installeres ved hjælp af make install.

Denne gang lad os forstå, hvordan denne type filer fungerer inden for Linux.

En makefil-fil Det skelnes grundlæggende i fire grundlæggende typer udsagn:

  • Comentarios
  • Variabler.
  • Eksplicit regler.
  • Implicitte regler.

De eksplicitte regler fortæller, hvilke filer der er afhængige af andre filer, samt de kommandoer, der kræves for at kompilere en bestemt fil.

Mens de implicitte ligner de eksplicitte, men med forskellen angiver de kommandoer, der skal udføres, men bruger filtypenavnet til at bestemme, hvilke kommandoer der skal udføres.

I dette eksempel vil vi ikke bruge disse sidste to, Vi starter kun med at udskrive den klassiske "Hello World" i terminalen.

Til dette skal vi oprette en tom mappe med det ønskede navn.

I dette tilfælde lad os kalde det "eksempel-make" og inden for dette Vi skal oprette en makefile med følgende indhold:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"

Nu kør filen ved at skrive make inde i biblioteket, output vil være:

make
echo "Hola Mundo"
Hola Mundo

Som du kan se, når makefilen blev udført, vises kommandoekko "Hello World" efterfulgt af output fra den aktuelle kommando. Det ønsker vi ofte ikke. For at undertrykke dette output, når du kører make, skal du blot tilføje et "@" før ekko:

Det praktiske eksempel på dette er:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"

Nu vi kan fortsætte med at køre makefilen igen. Outputtet netop dette skal vise:

make
Hola Mundo

Dette er ret grundlæggende. Men som du ved, indeholder makefiles mange ting, hvoraf de angiver de sekvenser, der skal følges.

Vi kan tilføje nogle enkle sekvenser til denne fil.

uanset hvad vi skal gøre er at redigere filen som følger:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Når du kører makefilen igen, dette udfører kun det første mål. Det skyldes, at kun det første mål i makefilen er standardmålet.

For udførelse skal udføres i rækkefølge det er nødvendigt at angive det i filen med "alle". Det er ansvaret for "der" at kalde andre mål.

all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Du kan fortsætte med at køre make igen, og du vil se, at der i filen en fil kaldes "File.txt".

På samme måde det er muligt at være i stand til at udføre et mål inde i makefile-filen, dette er generelt almindeligt anvendt.

Vi vil ændre vores fil, og vi vil tilføje følgende i slutningen:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Du kan køre igen, og det vil genskabe txt-filen. Som du kan se, vil det gøre det samme som før. Men nu skal vi udføre det mål, der er inde i makefile-filen.

Vi gør dette med:

make clean

Med dette kan vi lære noget helt grundlæggende om at lave filer, og hvordan de kan være ret nyttige, hvis vi vil automatisere nogle ting.

Det er klart, at du kan oprette en større og mere kompleks fil, men dette er kun et eksempel for nybegyndere (jeg inkluderer mig selv), der lærer at vide, hvordan dette fungerer.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   arg0s sagde han

    Meget interessant artikel. Et spørgsmål ... hvad du kalder "variabler" ville ikke være funktioner eller metoder?

    1.    David naranjo sagde han

      Faktisk, ja min ven, tak for rettelsen.
      Hilsner! 🙂

  2.   Peter sagde han

    Fremragende, jeg håber du fortsætter med at grave.

  3.   manuelalcocer sagde han

    Nå, hverken den ene eller den anden ting, https://www.gnu.org/software/make/manual/make.html, er "mål"

  4.   manuelalcocer sagde han

    regler

  5.   Sebas sagde han

    Forhåbentlig fortsætter de med at forklare ting som dette, "allestedsnærværende og elementært", i den daglige drift af Linux, som ingen nogensinde forklarer med den samme lidenskab som hvordan disse "fordele og drift" forkyndes.