Si haluat suorittaa tai päivittää tehtävän, kun tietyt tiedostot päivitetään, make-apuohjelma voi olla hyödyllinen. Make-apuohjelma vaatii tiedoston makefile, joka määrittelee suoritettavien tehtävien joukon.
Tämä nimi kuulostaa tutulta monille teistä, koska olet ehkä käyttänyt make-ohjelmaa kokoamaan lähdekoodista ohjelman. Useimmat avoimen lähdekoodin projektit käyttävät make-tiedostoa lopullisen suoritettavan binaarin kokoamiseen, joka voidaan asentaa make install -toiminnolla.
tällä kertaa ymmärretään miten tämäntyyppiset tiedostot toimivat Linuxissa.
Makefile-tiedosto Se erotetaan periaatteessa neljään perustyyppiseen lausuntoon:
- Comments
- Muuttujat.
- Selkeät säännöt.
- Implisiittiset säännöt.
Selkeät säännöt kertovat, mitkä tiedostot riippuvat muista tiedostoista, sekä tietyn tiedoston kokoamiseen tarvittavat komennot.
Vaikka implisiittiset ovat samanlaisia kuin eksplisiittiset, mutta erolla ne osoittavat komennot suoritettaviksi, mutta tekevät sen sijaan tiedostotunnisteiden avulla selvittääkseen suoritettavat komennot.
Tässä esimerkissä emme aio käyttää näitä kahta viimeistä, Aloitamme vasta tulostamalla klassisen "Hello World" terminaaliin.
Tätä varten aiomme luoda tyhjän hakemiston haluamallasi nimellä.
Tässä tapauksessa kutsutaan sitä "esimerkki-tehdä" ja tässä Aiomme luoda makefileen, jolla on seuraava sisältö:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Nyt Suorita tiedosto kirjoittamalla hakemistoon make, lähtö on:
make
echo "Hola Mundo"
Hola Mundo
Kuten näet, kun makefile suoritettiin, näyttöön tulee komento kaiku "Hello World", jota seuraa varsinaisen komennon lähtö. Emme usein halua sitä. Voit estää tämän ulostulon, kun suoritat make: n, lisäämällä vain "@" ennen kaikua:
Käytännön esimerkki tästä on:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
Nyt voimme jatkaa makefileen suorittamista uudelleen. Juuri tämän pitäisi näyttää:
make
Hola Mundo
Tämä on melko yksinkertaista. Mutta kuten tiedät, makefileissä on paljon asioita, joista ne osoittavat seuraavat sekvenssit.
Voimme lisätä joitain yksinkertaisia sekvenssejä tähän tiedostoon.
mikä tahansa aiomme tehdä, on muokata tiedostoa seuraavasti:
#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
Kun suoritat tiedostoa uudelleen, tämä vain toteuttaa ensimmäisen tavoitteen. Tämä johtuu siitä, että vain ensimmäinen tiedosto makefile-tiedostossa on oletuskohde.
Suorita peräkkäin se on välttämätöntä ilmoittaa tiedostossa "all". "Siellä" on vastuu kutsua muita kohteita.
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
Voit jatkaa make: n suorittamista uudelleen ja huomaat, että hakemistossa on tiedosto nimeltä "File.txt".
Samalla tavalla on mahdollista pystyä suorittamaan kohde makefile-tiedoston sisällä, tätä käytetään yleensä hyvin.
Aiomme muokata tiedostoa ja lisäämme seuraavan loppuun:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Voit suorittaa make uudelleen ja se luo txt-tiedoston uudelleen. Kuten näette, se tekee saman asian kuin edellinen kerta. Mutta nyt aiomme suorittaa kohteen, joka on makefile-tiedoston sisällä.
Teemme tämän:
make clean
Tämän avulla voimme oppia jotain melko yksinkertaista tiedostojen luomisesta ja siitä, kuinka ne voivat olla varsin hyödyllisiä, jos haluamme automatisoida joitain asioita.
Voit tietysti rakentaa suuremman ja monimutkaisemman tiedoston, mutta tämä on vain esimerkki aloittelijoille (mukaan lukien minä), jotka oppivat tuntemaan tämän toiminnan.
Erittäin mielenkiintoinen artikkeli. Kysymys ... mitä kutsutte "muuttujiksi", eivät ole funktioita tai menetelmiä?
Itse kyllä, ystäväni, kiitos korjauksesta.
Kippis! 🙂
Erinomainen, toivottavasti jatkat kaivamista.
No, ei yksi asia eikä toinen, https://www.gnu.org/software/make/manual/make.htmlovat "kohteita"
säännöt
Toivottavasti he jatkavat tämänkaltaisten, kaikkialla läsnä olevien ja perusasioiden, selittämistä Linuxin päivittäisestä toiminnasta, jota kukaan ei koskaan selitä samalla intohimolla kuin miten näitä "etuja ja toimintaa" saarnataan.