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.
Meget interessant artikel. Et spørgsmål ... hvad du kalder "variabler" ville ikke være funktioner eller metoder?
Faktisk, ja min ven, tak for rettelsen.
Hilsner! 🙂
Fremragende, jeg håber du fortsætter med at grave.
Nå, hverken den ene eller den anden ting, https://www.gnu.org/software/make/manual/make.html, er "mål"
regler
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.