Si ønsker å kjøre eller oppdatere en oppgave når bestemte filer oppdatereskan merkeverktøyet komme til nytte. Make-verktøyet krever en fil, makefile, som definerer et sett med oppgaver som skal utføres.
Dette navnet høres kjent ut for mange av dere, ettersom du kanskje har brukt lage for å kompilere et program fra kildekoden. De fleste open source-prosjekter bruker make for å kompilere en endelig kjørbar binær, som kan installeres ved hjelp av make install.
denne gangen vi kommer til å forstå hvordan denne typen filer fungerer i Linux.
En makefile-fil Det skilles i utgangspunktet i fire grunnleggende typer utsagn:
- Kommentarer
- Variabler
- Eksplisitte regler.
- Implisitte regler.
De eksplisitte reglene forteller om hvilke filer som er avhengige av andre filer, samt kommandoene som kreves for å kompilere en bestemt fil.
Mens de implisitte ligner de eksplisitte, men med forskjellen indikerer de kommandoene som skal utføres, men i stedet bruker filtypene for å bestemme hvilke kommandoer som skal utføres.
I dette eksemplet skal vi ikke bruke disse to siste, Vi skal bare begynne med å trykke klassikeren "Hello World" i terminalen.
For dette skal vi lage en tom katalog med navnet du ønsker.
I dette tilfellet la oss kalle det "eksempel-lag" og innenfor dette vi skal lage en makefile med følgende innhold:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Nå kjør filen ved å skrive make inne i katalogen, vil utdataene være:
make
echo "Hola Mundo"
Hola Mundo
Som du kan se når makefilen ble kjørt, vises kommandoekkoet "Hello World", etterfulgt av utdataene fra den faktiske kommandoen. Vi vil ofte ikke ha det. For å undertrykke denne utgangen når du kjører make, er det bare å legge til et "@" før ekko:
Det praktiske eksemplet 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"
Nå vi kan fortsette å kjøre makefilen igjen. Utgangen nettopp dette skal vise:
make
Hola Mundo
Dette er ganske grunnleggende. Men som du vet inneholder makefiles mange ting, som de indikerer sekvensene som skal følges.
Vi kan legge til noen enkle sekvenser i denne filen.
Hva vi skal gjøre er å 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 kjører om makefilen, dette vil bare utføre det første målet. Det er fordi bare det første målet i makefilen er standardmålet.
Å kjøre i rekkefølge det er nødvendig å indikere det i filen med "alle". Det er ansvaret "der" å kalle 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 fortsette å utføre make igjen, og du vil se at inne i katalogen heter en fil "File.txt".
Tilsvarende det er mulig å kunne utføre et mål inne i makefile-filen, dette er generelt mye brukt.
Vi skal endre filen vår, og vi skal legge til følgende på slutten:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Du kan kjøre make igjen, og det vil gjenskape txt-filen. Som du vil se, vil det gjøre det samme som forrige gang. Men nå skal vi utføre målet som er inne i makefile-filen.
Vi gjør dette med:
make clean
Med dette kan vi lære noe ganske grunnleggende om å lage filer og hvordan de kan være ganske nyttige hvis vi vil automatisere noen ting.
Åpenbart kan du bygge en større og mer kompleks fil, men dette er bare et eksempel for nybegynnere (inkludert meg selv) som blir kjent med hvordan dette fungerer.
Veldig interessant artikkel. Et spørsmål ... det du kaller "variabler" ville ikke være funksjoner eller metoder?
Faktisk, ja min venn, takk for rettelsen.
Jubel! 🙂
Utmerket, jeg håper du fortsetter å grave.
Vel, hverken den ene eller den andre, https://www.gnu.org/software/make/manual/make.html, er "mål"
regler
Forhåpentligvis fortsetter de å forklare ting som dette, "allestedsnærværende og elementært", i den daglige driften av Linux, som ingen noen gang forklarer med samme lidenskap som hvordan disse "fordelene og driften" blir forkynt.