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 .
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.
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 := totoegyenértékű:
y := titi tata x := totoMá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 .
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.cde nem a párok:
fifi.o fifi.c goto.o goto.cA 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.
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ő .