Kio estas Makefile kaj kiel ĝi funkcias ene de Linukso?

Kio estas Makefile kaj kiel ĝi funkcias ene de Linukso

Si volas lanĉi aŭ ĝisdatigi taskon kiam iuj dosieroj estas ĝisdatigitaj, la fabrikilo povas esti oportuna. La utilaĵo make bezonas dosieron, makefile, kiu difinas aron de taskoj plenumendaj.

Ĉi tiu nomo sonos konata al multaj el vi, ĉar vi eble uzis make por kompili programon el fontkodo. Plej multaj malfermfontaj projektoj uzas make por kompili finan plenumeblan binaran programon, kiu povas esti instalita per make install.

Ĉifoje ni komprenos kiel ĉi tia dosiero funkcias en Linukso.

Makefile-dosiero Ĝi esence distingiĝas en kvar bazaj specoj de asertoj:

  • komentoj
  • Variabloj
  • Eksplicitaj reguloj.
  • Implicaj reguloj.

La Eksplicitaj Reguloj diras, kiuj dosieroj dependas de aliaj dosieroj, kaj ankaŭ la ordonoj necesaj por kompili apartan dosieron.

Dum la implicitaj similas al la eksplicitaj, sed kun la diferenco ili indikas la ordonojn por plenumi, sed anstataŭe uzas la dosierajn etendaĵojn por determini kiujn ordonojn efektivigi.

En ĉi tiu ekzemplo ni ne uzos ĉi tiujn du lastajn, Ni nur komencos presante la klasikan "Saluton Mondo" en la fina stacio.

Por tio ni kreos malplenan dosierujon kun la nomo, kiun vi volas.

En ĉi tiu kazo ni nomu ĝin "ekzemplo-fari" kaj ene de ĉi tio ni kreos makefile kun la sekva enhavo:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"

Nun rulu la dosieron tajpante make ene de la dosierujo, la eligo estos:

make
echo "Hola Mundo"
Hola Mundo

Kiel vi povas vidi kiam la makefile estis lanĉita, la komanda eoo "Saluton Mondo" estas montrata, sekvata de la eligo de la efektiva komando. Ni ofte ne volas tion. Por subpremi ĉi tiun rezulton kiam vi lanĉas make, simple aldonu "@" antaŭ eoo:

La praktika ekzemplo de tio estas:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"

Nun ni povas daŭrigi lanĉi la makefile denove. La eligo nur ĉi tio devas montri:

make
Hola Mundo

Ĉi tio estas sufiĉe baza. Sed kiel vi scias, makefiles enhavas multajn aferojn, el kiuj ili indikas la sekvojn sekvotajn.

Ni povas aldoni iujn simplajn sekvencojn al ĉi tiu dosiero.

Kio ni faros redakti la dosieron jene:

#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

Reruligante la makedosieron, ĉi tio nur plenumos la unuan celon. Tio estas ĉar nur la unua celo en la makefile estas la defaŭlta celo.

Kuri sinsekve necesas indiki ĝin ene de la dosiero kun "ĉiuj". Estas la respondeco "tie" nomi aliajn celojn.

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

Vi povas plu ekzekuti make kaj vi vidos, ke en la dosierujo nomiĝas dosiero "File.txt".

De la sama maniero eblas ekzekuti celon ene de la makefile-dosiero, ĉi tio estas ĝenerale vaste uzata.

Ni modifos nian dosieron kaj ni aldonos jenon fine:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Vi povas ruli make denove kaj ĝi rekreos la txt-dosieron. Kiel vi vidos, ĝi faros la samon kiel la antaŭa tempo. Sed nun ni ekzekutos la celon, kiu estas ene de la makefile-dosiero.

Ni faras ĉi tion per:

make clean

Per ĉi tio ni povas lerni ion sufiĉe bazan pri fari dosierojn kaj kiel ili povas esti sufiĉe utilaj se ni volas aŭtomatigi iujn aferojn.

Evidente vi povas krei pli grandan kaj pli kompleksan dosieron, sed ĉi tio estas nura ekzemplo por novuloj (mi inkluzivas min), kiuj ekkonas kiel ĉi tio funkcias.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

6 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   Arg0s diris

    Tre interesa artikolo. Demando ... kion vi nomas "variabloj" ne estus funkcioj aŭ metodoj?

    1.    David naranjo diris

      Fakte, jes mia amiko, dankon pro la korekto.
      Saluton! 🙂

  2.   Pedro diris

    Bonege, mi esperas, ke vi plu fosos.

  3.   ManuelALcocer diris

    Nu, nek unu afero nek la alia, https://www.gnu.org/software/make/manual/make.html, estas "celoj"

  4.   ManuelALcocer diris

    reguloj

  5.   Sebas diris

    Espereble ili daŭre klarigas tiajn aferojn, "ĉieajn kaj elementajn", pri la ĉiutaga funkciado de Linukso, kiun neniu iam kun la sama pasio klarigas kiel oni predikas tiujn "avantaĝojn kaj funkciadon".