Si bizonyos fájlok frissítésekor futtatni vagy frissíteni szeretne egy feladatot, a make segédprogram jól jöhet. A make segédprogramhoz szükséges egy fájl, a makefile, amely meghatározza a végrehajtandó feladatok halmazát.
Ez a név sokak számára ismerősen fog hangzani, mivel a forráskódból program összeállításához használhatta a make-et. A legtöbb nyílt forráskódú projekt a make használatával állítja össze a végleges futtatható bináris fájlt, amelyet a make install használatával lehet telepíteni.
Ebben az esetben értsük meg, hogyan működnek az ilyen típusú fájlok a Linuxon belül.
Makefile fájl Alapvetően négyféle állításra oszlik:
- Comments
- Változók
- Kifejezett szabályok.
- Implicit szabályok.
Az explicit szabályok megadják, hogy mely fájlok függnek más fájloktól, valamint az adott fájl fordításához szükséges parancsoktól.
Míg az implicitek hasonlítanak az explicitekhez, de különbséggel jelzik a végrehajtandó parancsokat, ehelyett azonban a fájlkiterjesztésekkel határozzák meg, hogy mely parancsokat hajtsák végre.
Ebben a példában nem ezt az utóbbi kettőt fogjuk használni, Csak azzal kezdjük, hogy kinyomtatjuk a klasszikus "Hello World" -t a terminálba.
Ehhez létrehozunk egy üres könyvtárat a kívánt névvel.
Ebben az esetben nevezzük "példa-készítésnek" és ezen belül Készíteni fogunk egy makefile-t a következő tartalommal:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Most futtassa a fájlt a make beírásával a könyvtárba, a kimenet a következő lesz:
make
echo "Hola Mundo"
Hola Mundo
Amint láthatja a makefile futtatásakor, megjelenik a "Hello World" visszhang és a tényleges parancs kimenete. Gyakran nem ezt akarjuk. A kimenet elnyomásához a make futtatásakor egyszerűen adjon hozzá egy "@" szót visszhang előtt:
Ennek gyakorlati példája:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
Most újra folytathatjuk a makefile futtatását. Csak ennek a kimenetnek kell megmutatnia:
make
Hola Mundo
Ez elég alap. De mint tudják, a makefájlok sok mindent tartalmaznak, amelyek jelzik a követendő szekvenciákat.
Hozzáadhatunk néhány egyszerű szekvenciát ehhez a fájlhoz.
bármi a következõ módon fogjuk szerkeszteni a fájlt:
#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 makefile újraindításakor ez csak az első célt fogja megvalósítani. Ez azért van, mert a makefájlban csak az első cél az alapértelmezett cél.
A végrehajtás sorrendben történő elvégzéséhez szükséges feltüntetni a fájlban "all" -al. Az "ott" feladata más célpontok felhívása.
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
Folytathatja a make újbóli végrehajtását, és látni fogja, hogy a könyvtárban található egy fájl "File.txt".
Ugyanígy lehetséges egy célpont végrehajtása a makefile fájlban, ezt általában széles körben használják.
Módosítani fogjuk a fájlunkat, és a következőket fogjuk hozzáadni a végén:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Futtathatja újra a make-et, és ez létrehozza a txt fájlt. Mint látni fogja, ugyanazt fogja tenni, mint az előző alkalommal. De most a makefile fájlban lévő célt fogjuk végrehajtani.
Tesszük ezt:
make clean
Ezzel megtudhatunk valami egészen alapvető dolgot a fájlok készítéséről és arról, hogy ezek hogyan lehetnek hasznosak, ha automatizálni akarunk néhány dolgot.
Nyilván lehet nagyobb és összetettebb fájlt készíteni, de ez csupán példa azoknak a kezdőknek (ide tartozom), akik megismerik ennek működését.
Nagyon érdekes cikk. Egy kérdés ... amit Ön "változóknak" nevez, nem függvények vagy módszerek lennének?
Sőt, igen, barátom, köszönöm a javítást.
Egészségére! 🙂
Kiváló, remélem, folyton ássz.
Nos, sem az egyik, sem a másik, https://www.gnu.org/software/make/manual/make.html, "célpontok"
szabályok
Remélhetőleg folytatják a Linux mindennapi futtatásának ilyen, "mindenütt jelen lévő és alapvető" dolgok magyarázatát, amelyeket soha senki nem magyaráz meg ugyanolyan szenvedéllyel, mint hogy miként hirdetik ezeket az "előnyöket és működést".