Què és un arxiu Makefile i com funciona dins de Linux?

Què és un arxiu Makefile i com funciona dins de Linux

Si desitgen executar o actualitzar una tasca quan s'actualitzen determinats arxius, La utilitat make pot venir molt bé. La utilitat make requereix d'un arxiu, makefile, que defineix un conjunt de tasques a executar.

A molts de vostès els sonés aquest nom doncs pot ser que hagin utilitzat make per compilar un programa des de codi font. La majoria dels projectes de codi obert utilitzen make per compilar un binari executable final, que pot ser instal·lat usant make install.

En aquesta ocasió anem a entendre com és que funciona aquest tipus d'arxius dins de Linux.

Un arxiu makefile bàsicament es distingeix en quatre tipus bàsics de declaracions:

  • Comentaris
  • Les variables.
  • Regles explícites.
  • Regles implícites.

Les Regles explícites li indiquen a make que arxius depenen d'altres arxius, així com les ordres requerits per compilar un arxiu en particular.

Mentre que les implícites són similars que les explícites, però amb la diferència indiquen les ordres a executar, sinó que make utilitza les extensions dels arxius per determinar que ordres executar.

En aquest exemple no utilitzarem aquestes últimes dues, només anem a començar per la impressió de el clàssic «Hola Món» en el terminal.

Per això crearem un directori buit amb el nom que vulguin.

En aquest cas anem a cridar-ho "exemple-make" i dins d'aquest crearem un un arxiu makefile amb el següent contingut:

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

Ara executa l'arxiu escrivint make dins de directori, la sortida serà:

make
echo "Hola Mundo"
Hola Mundo

Com podran veure quan l'arxiu make va ser executat, la comanda echo «Hola Món» es mostra, seguit de la sortida de la comanda real. Sovint no volem això. Per suprimir aquesta sortida a l'executar make, només cal afegir un "@" abans de fet:

L'exemple pràctic d'això és:

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

Ara podem procedir a executar l'arxiu make de nou. La sortida només això hauria de mostrar:

make
Hola Mundo

Aquesta és una cosa bastant bàsic. Però com sabran els arxius makefile contenen moltes coses, de les quals indiquen les seqüències que deu seguir.

Podrem afegir unes seqüències simples a aquesta imatge.

el que farem és editar l'arxiu de la següent manera:

#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

A el tornar a executar el makefile, aquest sol executés el primer objectiu. Això és perquè només el primer objectiu en el makefile és el destí predeterminat.

Perquè l'execució es realitzi en seqüència cal indicar-dins de l'arxiu amb "all". És responsabilitat de "all" trucar a altres objectius.

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

Poden procedir a executar de nou make i veuran que d'aquí a directori es va crear un arxiu anomenat "Fitxer.txt".

De la mateixa manera és possible poder executar un objectiu dins de l'arxiu makefile, Això generalment és molt utilitzat.

Anem a modificar el nostre arxiu i anem a afegir el següent a la fi:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Poden tornar a executar make i aquest tornarà a crear l'arxiu txt. Com veuran tornarà fer el mateix que la vegada anterior. Però ara anem a executar l'objectiu que aquesta dins de l'arxiu makefile.

Això ho fem amb:

make clean

Amb això podrem conèixer alguna cosa bastant bàsic sobre els arxius make i com poden ser força útils si volem automatitzar algunes coses.

Òbviament pot construir un arxiu més gran i complex, però aquest és un mer exemple per a principiants (m'incloc) que anem coneixent el funcionament d'això.


6 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Arg0s va dir

    Molt interessant l'article. Una pregunta .. el que anomenes «variables» no serien funcions o mètodes?

    1.    David Taronger va dir

      De fet, si amic, gràcies per la correcció.
      Salutacions! 🙂

  2.   Pedro va dir

    Excelente.ojalá segueixis aprofundint.

  3.   ManuelALcocer va dir

    doncs ni una cosa ni l'altra, https://www.gnu.org/software/make/manual/make.html, Són «targets»

  4.   ManuelALcocer va dir

    regles

  5.   Sebas va dir

    Tant de bo segueixin explicant coses així, «omnipresents i elementals», del dia a dia de l'funcionament de Linux, que mai ningú explica amb la mateixa passió que com es prediquen aquestes «avantatges i funcionament».