GNU Make

GNU Make

Információ
Teremtő Richard Stallman és Roland McGrath
Fejlesztette GNU Project
Utolsó verzió 4,3 (2020. január 19)
Letét git.savannah.gnu.org/cgit/make.git
Beírva VS
Operációs rendszer GNU és GNU / Linux
Környezet GNU / Linux
típus Gyártási motor
Engedély GPLv3
Weboldal www.gnu.org/s/make/

GNU make alakváltozata GNU A termelés motorja make . A Gmake Richard Stallman és Roland McGrath együttműködésének eredménye .

Sajátosságok

Az alábbiakban felsorolt ​​sajátosságok némelyike ​​nem feltétlenül specifikus a GNU gyártmányaival kapcsolatban, amennyiben más változatoktól örökölték, vagy akár más variánsokkal is utánozták őket, de mindkét oldalon egymástól függetlenül is kitalálták.

Nem a ( z ) felhasználói kézikönyv cseréjéről van szó, hanem a legkiemelkedőbb elemek kiemeléséről.

A változók értéke

Míg a változó értékét hagyományosan makróként kezelik, így rekurzív, amikor a használata a GNU make lehetővé teszi azon változók definiálását, amelyek értéke rögzítve van a meghatározás idején.

Hagyományos példa:

titi = $(tata) tata = $(toto) toto = salut all:;echo $(titi)

megjelenik a „hi” után titi megtörtént tata viszont értékelték toto végül értékelték hi .

Ez az első íz az egyetlen ismert más változatai make . Ennek előnyei vannak, különösen lehetővé teszi a tényleges végső érték meghatározását csak az utolsó esetben. Rugalmasságot biztosít a deklarációk sorrendjében is, így a fenti példában az eredmény független az első három deklaráció sorrendjétől.

Ennek az első íznek viszont két hátránya van. A legkevesebb, hogy a változókat szisztematikusan újraértékelik minden egyes használatukkor (még akkor is, ha értékük állandó marad), ami ebben a pontos esetben felesleges terhet jelent. A másik, hogy általános esetben nem teszi lehetővé újradefiniálását az alábbi példában leírtak szerint:

titi = jour toto = bon titi = $(toto)${titi}

Ebben az esetben a harmadik sor a titi rekurzív definíciójához vezet, amelyet a GNU gyártója hibaként utasít el.

A GNU készítéssel elérhető második ízt az alábbi példa szemlélteti:

x := titi y := $(x) tata x := toto

egyenértékű:

y := titi tata x := toto

Más szavakkal, ez a második íz adja az így definiált változók viselkedését, amely megegyezik a legtöbb más programozási nyelv, például a C nyelv változókéval .

Általános szabályok

A Make lehetővé teszi explicit és implicit vagy általános szabályok meghatározását.

A legtöbb variánsai make , ezek a kifejezések csökkenteni egyszerű pár utótagot . Amikor egy célfájlnévnél van egy forrásfájl azonos gyökérrel, és van egy implicit szabály, amely összeköti a cél utótagját a forráséval, akkor a szabály alkalmazható. Példa:

.c.o: $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

Leírja, hogy bármilyen ".o" utótag fájl előállítható implicit módon a ".c" utótag fájlból

A GNU make lehetővé teszi a kissé összetettebb reguláris kifejezéseket, amelyek szintaxisa hasonló az explicit szabályokéhoz. Példa:

 %.o: %.c toto.h $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

Ebben a példában meg kell jegyezni, hogy az így definiált általános szabály nem korlátozódik az ".o" és ".c" utótagok összekapcsolására, hanem lehetővé teszi (a nézőponttól függően) további függőség előírását vagy megadását. egy fájl. Különösen: "toto.h" (a példában). Ebben a szintaxisban a "%" karakter az, amely a forrás és a cél között közös mintát (vagy akár mintát ) megtalálja.

Ez a szintaxis lehetővé teszi, hogy ne korlátozódjon az egyetlen utótagra. Tehát a példában:

f%.o: g%.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

azt is előírjuk, hogy az általános szabály csak az ".o" utótagú célpontokra vonatkozik, amelyek fájlneve "f" -vel kezdődik, és a ".c" utótagú forrásokra, amelyek fájlneve "g" -vel kezdődik, és ugyanazokat osztják meg "%" minta. A párokra tehát a fent meghatározott általános szabály hatással lesz:

fifi.o gifi.c foto.o goto.c

de nem a párok:

fifi.o fifi.c goto.o goto.c

Funkciók

A GNU make széles körű funkciókat kínál, amelyek bárhol használhatók, ahol egy változó hivatkozás megtalálható . A függvény hívásának szintaxisa, nagyon hasonló a változó hivatkozáséhoz, általános formájú:

${fonction arguments}

A rendelkezésre álló funkciók közül a következő kategóriákat azonosíthatjuk:

A GNU make azt is lehetővé teszi a felhasználó számára, hogy saját funkcióit meghatározza azáltal, hogy faktorál egy változó (a függvény neve) meghatározásával, amelynek értéke más függvények és változók (hivatalos vagy valós) kombinációja.

GNU Guile

A hamis támogatást a 4.0 verzió óta nyújtják. Az első szoftver tégla, amely kihasználja, valószínűleg a Guix lesz , a GNU számára tervezett tisztán funkcionális csomagkezelő .

Megjegyzések és hivatkozások

  1. (in) Paul Smith GNU make 4.3 megjelent!  " ,2020. január 19(hozzáférés : 2020. február 20. )
  2. hi nem definiálva változóként, konstans karakterláncként kezeljük
  3. Ez itt természetesen csak tankönyves eset
  4. implicit szabályok csak általános, előre definiált szabályok
  5. Nem szabad összetéveszteni a feltételes kóddal, amely lehetővé teszi a makefile egyes részeinek kizárását vagy feltételes figyelembe vételét
  6. (in) "  GNU Make 4,0 hozza új funkciók, húzódik Guile  " on phoronix.com ,2013. október 9(megtekintve : 2014. október 23. )  ;

Külső linkek