Si želite pokrenuti ili ažurirati zadatak kada se ažuriraju određene datoteke, uslužni program make može dobro doći. Uslužni program make zahtijeva datoteku makefile koja definira skup zadataka koje treba izvršiti.
Mnogi od vas će ovo ime zvučati poznato jer ste možda koristili make za sastavljanje programa iz izvornog koda. Većina projekata otvorenog koda koristi make za sastavljanje konačne izvršne binarne datoteke, koja se može instalirati pomoću make install.
Ovom prilikom shvatimo kako ova vrsta datoteka radi u Linuxu.
Makefile datoteka U osnovi se razlikuje u četiri osnovne vrste izjava:
- Komentari
- Varijable
- Eksplicitna pravila.
- Implicitna pravila.
Eksplicitna pravila govore koja datoteka ovisi o drugim datotekama, kao i naredbe potrebne za sastavljanje određene datoteke.
Iako su implicitne slične eksplicitnim, ali s razlikom ukazuju na naredbe za izvršenje, ali make koristi ekstenzije datoteka da bi odredile koje naredbe treba izvršiti.
U ovom primjeru nećemo koristiti ove dvije posljednje, Počet ćemo samo ispisivanjem klasičnog "Hello World" na terminalu.
Za ovo ćemo stvoriti prazan direktorij s imenom koje želite.
U ovom slučaju nazovimo to "primjer-napravi" i unutar ovoga Stvorit ćemo makefile sa sljedećim sadržajem:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Sada pokrenite datoteku upisivanjem make unutar direktorija, izlaz će biti:
make
echo "Hola Mundo"
Hola Mundo
Kao što vidite kada je izvršena make datoteka, prikazuje se naredba echo "Hello World", nakon čega slijedi izlaz stvarne naredbe. To često ne želimo. Da biste suzbili ovaj izlaz kada pokrenete make, samo dodajte znak "@" prije odjeka:
Praktični primjer ovoga je:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
Sada možemo ponovo pokrenuti makefile. Izlaz koji bi trebao prikazati samo ovaj:
make
Hola Mundo
Ovo je prilično osnovno. Ali kao što znate, make datoteke sadrže puno stvari, od kojih one ukazuju na sekvence koje treba slijediti.
U ovu datoteku možemo dodati nekoliko jednostavnih sekvenci.
Šta što ćemo napraviti je urediti datoteku na sljedeći način:
#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
Prilikom ponovnog pokretanja make datoteke, ovo će izvršiti samo prvi cilj. To je zato što je samo prvi cilj u datoteci make zadani cilj.
Da se trči u nizu potrebno je u datoteci označiti sa "all". Odgovornost je „tamo“ da poziva druge ciljeve.
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
Možete ponovo pokrenuti make i vidjet ćete da se unutar direktorija zove datoteka "File.txt".
Na isti način moguće je izvršiti cilj unutar datoteke makefile, ovo se uglavnom koristi.
Izmijenit ćemo našu datoteku i na kraju ćemo dodati sljedeće:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Možete ponovo pokrenuti make i on će ponovno stvoriti txt datoteku. Kao što ćete vidjeti, učinit će isto što i prethodni put. Ali sada ćemo izvršiti cilj koji se nalazi u datoteci makefile.
To radimo sa:
make clean
Ovim možemo znati nešto sasvim osnovno o make datotekama i kako one mogu biti vrlo korisne ako neke stvari želimo automatizirati.
Očito je da možete napraviti veću i složeniju datoteku, ali ovo je puki primjer za početnike (uključujući i sebe) koji se upoznaju s tim kako to funkcionira.
Vrlo zanimljiv članak. Pitanje ... ono što nazivate "varijablama" nisu funkcije ili metode?
Zapravo, da, prijatelju, hvala na ispravci.
Živjeli! 🙂
Odlično, nadam se da ćete nastaviti kopati.
Pa, ni jedno ni drugo, https://www.gnu.org/software/make/manual/make.html, su "mete"
pravila
Nadamo se da će i dalje objašnjavati ovakve stvari, "sveprisutne i elementarne" svakodnevnog rada Linuxa, što nikada niko ne objašnjava sa istom strašću kao što se propovedaju te "prednosti i rad".