Što je Makefile i kako to radi u Linuxu?

Što je Makefile i kako to radi u Linuxu

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 će od vas 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.

ovaj puta shvatimo kako ova vrsta datoteka radi u Linuxu.

Datoteka makefile U osnovi se razlikuje u četiri osnovne vrste izjava:

  • komentari
  • Varijable
  • Eksplicitna pravila.
  • Implicitna pravila.

Izričita pravila određuju koje datoteke ovise o drugim datotekama, kao i naredbe potrebne za sastavljanje određene datoteke.

Iako su implicitne slične eksplicitnim, ali s tom razlikom naznačuju naredbe za izvršenje, ali make koristi ekstenzije datoteka da bi odredio koje naredbe treba izvršiti.

U ovom primjeru nećemo koristiti ove dvije posljednje, Počet ćemo samo ispisom klasičnog "Hello World" na terminalu.

Za to ć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 potisnuli ovaj izlaz kada pokrenete make, samo dodajte znak "@" prije odjeka:

Praktični primjer toga 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 nastaviti s ponovnim pokretanjem make datoteke. Izlaz koji bi trebao prikazati samo ovaj:

make
Hola Mundo

Ovo je prilično osnovno. Ali kao što možda znate, make datoteke sadrže puno stvari, od kojih označavaju nizove koje treba slijediti.

U ovu datoteku možemo dodati nekoliko jednostavnih slijedova.

štogod što ćemo učiniti 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.

Za trčanje u nizu potrebno je u datoteci označiti s "all". Odgovornost je "tamo" da pozove 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 ponovno 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 općenito 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 ponovno 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 unutar datoteke makefile.

To radimo sa:

make clean

Ovim možemo naučiti nešto sasvim osnovno o make datotekama i kako one mogu biti vrlo korisne ako neke stvari želimo automatizirati.

Očito možete izraditi 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.


Sadržaj članka pridržava se naših načela urednička etika. Da biste prijavili pogrešku, kliknite ovdje.

6 komentara, ostavi svoj

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Arg0s dijo

    Vrlo zanimljiv članak. Pitanje ... ono što nazivate "varijablama" ne bi bile funkcije ili metode?

    1.    David naranjo dijo

      Zapravo da, prijatelju, hvala na ispravci.
      Živjeli! 🙂

  2.   Nestajati dijo

    Izvrsno, nadam se da ćete nastaviti kopati.

  3.   ManuelALcocer dijo

    Pa, ni jedno ni drugo, https://www.gnu.org/software/make/manual/make.html, su "ciljevi"

  4.   ManuelALcocer dijo

    pravila

  5.   Sebas dijo

    Nadamo se da će i dalje objašnjavati ovakve stvari, "sveprisutne i elementarne", svakodnevnog rada Linuxa, što nikad nitko ne objašnjava sa istom strašću kao što se propovijedaju te "prednosti i rad".