Si vill köra eller uppdatera en uppgift när vissa filer uppdateras, gör verktyget kan vara till nytta. Make-verktyget kräver en fil, makefile, som definierar en uppsättning uppgifter som ska utföras.
Det här namnet kommer att låta bekant för många av er eftersom ni kan ha använt make för att kompilera ett program från källkoden. De flesta öppna källkodsprojekt använder make för att sammanställa en slutlig körbar binär, som kan installeras med make install.
denna gång låt oss förstå hur denna typ av filer fungerar inom Linux.
En makefil-fil Det skiljer sig i princip in i fyra grundläggande typer av uttalanden:
- Kommentarer
- Variabler.
- Explicita regler.
- Underförstådda regler.
Explicit Rules anger vilka filer som är beroende av andra filer, liksom de kommandon som krävs för att kompilera en viss fil.
Medan de implicita liknar de explicita, men med skillnaden indikerar de kommandona att utföra, men använder filtilläggen för att bestämma vilka kommandon som ska köras.
I det här exemplet ska vi inte använda de två sista, Vi börjar bara med att skriva ut den klassiska "Hello World" i terminalen.
För detta ska vi skapa en tom katalog med det namn du vill ha.
I det här fallet låt oss kalla det "exempel-make" och inom detta Vi ska skapa en makefile med följande innehåll:
#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 genom att skriva make i katalogen, utdata kommer att vara:
make
echo "Hola Mundo"
Hola Mundo
Som du kan se när makefilen kördes visas kommandoekot "Hello World" följt av utdata från det faktiska kommandot. Det vill vi ofta inte. För att undertrycka denna utgång när du kör make, lägg bara till ett "@" före eko:
Det praktiska exemplet på detta är:
#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ätta att köra makefilen igen. Utgången just detta ska visa:
make
Hola Mundo
Detta är ganska grundläggande. Men som ni vet innehåller makefiler många saker, av vilka de anger de sekvenser som ska följas.
Vi kan lägga till några enkla sekvenser i den här filen.
vad vi ska göra är att redigera filen enligt följande:
#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ör om makefilen, detta kommer bara att utföra det första målet. Det beror på att endast det första målet i makefilen är standardmålet.
För att körningen ska utföras i sekvens det är nödvändigt att ange det i filen med "allt". Det är ansvaret för "där" att kalla andra 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ätta att köra make igen och du kommer att se att det finns en fil i katalogen "File.txt".
På samma sätt det är möjligt att kunna köra ett mål inuti makefile-filen, detta är i allmänhet mycket använt.
Vi kommer att ändra vår fil och vi kommer att lägga till följande i slutet:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Du kan köra om igen och det återskapar txt-filen. Som du kommer att se kommer det att göra samma sak som förra gången. Men nu ska vi köra målet som finns i makefile-filen.
Vi gör detta med:
make clean
Med detta kan vi lära oss något helt grundläggande om att skapa filer och hur de kan vara ganska användbara om vi vill automatisera vissa saker.
Uppenbarligen kan du bygga en större och mer komplex fil, men det här är bara ett exempel för nybörjare (jag inkluderar mig själv) som lär sig hur detta fungerar.
Mycket intressant artikel. En fråga ... vad du kallar "variabler" skulle inte vara funktioner eller metoder?
I själva verket, ja min vän, tack för rättelsen.
Skål! 🙂
Utmärkt, jag hoppas att du fortsätter att gräva.
Tja, varken det ena eller det andra, https://www.gnu.org/software/make/manual/make.html, är "mål"
regler
Förhoppningsvis fortsätter de att förklara saker som detta, "allestädes närvarande och elementärt", i den dagliga driften av Linux, som ingen någonsin förklarar med samma passion som hur dessa "fördelar och funktion" predikas.