Si vēlaties palaist vai atjaunināt uzdevumu, kad tiek atjaunināti noteikti faili, make lietderība var būt noderīga. Izveidošanas utilītai nepieciešams fails makefile, kas nosaka izpildāmo uzdevumu kopumu.
Šis nosaukums daudziem no jums izklausīsies pazīstams, jo jūs, iespējams, izmantojāt zīmējumu, lai izveidotu programmu no avota koda. Lielākā daļa atvērtā koda projektu izmanto make, lai sastādītu galīgo izpildāmo bināro failu, kuru var instalēt, izmantojot make install.
Šoreiz sapratīsim, kā šāda veida faili darbojas Linux.
Makefile fails Tas būtībā tiek izdalīts četros paziņojumu pamatveidos:
- Komentāri
- Mainīgie
- Skaidri noteikumi.
- Netiešie noteikumi.
Noteiktie noteikumi nosaka, kuri faili ir atkarīgi no citiem failiem, kā arī komandas, kas nepieciešamas konkrēta faila sastādīšanai.
Kaut arī netiešie ir līdzīgi tiešajiem, bet ar atšķirību tie norāda izpildāmās komandas, taču, lai noteiktu, kuras komandas izpildīt, tiek izmantoti failu paplašinājumi.
Šajā piemērā mēs neizmantosim pēdējos divus, Mēs sāksim tikai ar termināļa drukāšanu klasiskajā "Hello World".
Šim nolūkam mēs izveidosim tukšu direktoriju ar vēlamo vārdu.
Šajā gadījumā sauksim to par "example-make" un tajā Mēs izveidosim šāda faila makefailu:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Tagad palaidiet failu, direktorijā ierakstot make, izeja būs:
make
echo "Hola Mundo"
Hola Mundo
Kā redzat, kad makefile tika izpildīts, tiek parādīta komandas atbalss "Hello World", kam seko faktiskās komandas izeja. Mēs bieži to nevēlamies. Lai nomāktu šo izvadi, palaižot make, pirms atbalss vienkārši pievienojiet "@":
Praktiskais piemērs tam ir:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
Tagad mēs varam turpināt palaist makefailu vēlreiz. Tieši šai izejai vajadzētu parādīt:
make
Hola Mundo
Tas ir diezgan vienkārši. Bet, kā jūs zināt, makefaili satur daudz ko, no kuriem tie norāda sekojošās sekvences.
Šim failam mēs varam pievienot dažas vienkāršas sekvences.
Ko mēs rediģēsim failu šādi:
#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
Pārkārtojot makefailu, tas tikai izpildīs pirmo mērķi. Tas ir tāpēc, ka tikai pirmais mērķis makefile ir noklusējuma mērķis.
Lai izpilde tiktu veikta secīgi tas ir jānorāda failā ar "visi". "Tur" pienākums ir saukt citus mērķus.
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
Jūs varat turpināt palaist make atkal, un jūs redzēsiet, ka direktorijā iekšpusē tiek saukts fails "File.txt".
Tādā pašā veidā makefile failā ir iespējams izpildīt mērķi, tas parasti tiek ļoti izmantots.
Mēs modificēsim savu failu un beigās pievienosim:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Varat atkārtoti izveidot un tas atjaunos txt failu. Kā redzēsiet, tas darīs to pašu, ko iepriekšējā reizē. Bet tagad mēs izpildīsim mērķi, kas atrodas makefile failā.
Mēs to darām ar:
make clean
Tādējādi mēs varam uzzināt kaut ko diezgan vienkāršu par failu veidošanu un to, kā tie var būt diezgan noderīgi, ja mēs vēlamies automatizēt dažas lietas.
Acīmredzot jūs varat izveidot lielāku un sarežģītāku failu, taču tas ir tikai piemērs iesācējiem (es iekļauju sevi), kuri sāk iepazīt, kā tas darbojas.
Ļoti interesants raksts. Jautājums ... tas, ko jūs saucat par "mainīgajiem", nebūtu funkcijas vai metodes?
Patiesībā, jā, draugs, paldies par labojumu.
Priekā! 🙂
Lieliski, es ceru, ka jūs turpināsiet rakties.
Nu, ne viena, ne otra lieta, https://www.gnu.org/software/make/manual/make.html, ir "mērķi"
noteikumi
Cerams, ka viņi turpina izskaidrot šādas ikdienas lietojumprogrammas "visuresošas un elementāras" lietas, kuras Linux nekad neizraisa ar tādu pašu aizraušanos, kā tiek sludinātas šīs "priekšrocības un darbība".