Létrehozása make-fájlok

A szerkezet a make-fájlokat

Márka segédprogramot. automatikusan meghatározza, hogy mely darabokat egy nagy program kell újrafordítani, és végrehajtja a szükséges intézkedéseket.

Használat előtt. létre kell hozni az úgynevezett makefile (makefile), aki leírja a függőségek között fájlok lefordított programot, és utasításokat tartalmaznak frissíteni ezeket a fájlokat. Jellemzően a futtatható fájl függ a tárgy fájlok, viszont az eredménye összeállításának megfelelő forrás fájlokat.

Miután a kívánt make-fájl jön létre, egy egyszerű parancsot:

Ez lesz elegendő ahhoz, hogy az összes szükséges recompilations ha a forrás fájlokat a program módosult. Származó információk felhasználásával a make-fájlt, és tudván az időt az utolsó módosítás idejét fájlok teszik közüzemi eldönti, hogy melyik a fájlt kell frissíteni. Minden ilyen fájlok lesznek a parancsban megadott make-fájlt.

Ha telefonál tenni. paramétereket lehet megadni a parancssorban, megjelölve, hogy mely fájlokat kell építeni, és hogyan kell csinálni.

Egyszerű make-fájl

Egyszerű make-fájlt tartalmaz „szabályok” (szabályok) a következő formában:

Általában, a cél (target) a neve a fájl üzemeltetése során keletkező a make segédprogram. Ennek egyik példája a tárgy és a futtatható fájlokat összegyűjtjük a programot. A cél is lehet a nevét egy végrehajtandó művelet (például tiszta - tiszta).

Előfeltétel (előfeltétel) - a fájl használunk iskhoddnye adatok létrehozása a cél. Nagyon gyakran a cél függ több fájlt.

A csapat - az akció, hogy a közüzemi make. A szabály tartalmazhat több csapat - mindegyik a saját vonal. Fontos megjegyzés: A sorok, amelyek tartalmazzák a parancsokat kell kezdődnie a lapon! Figyelmen kívül hagyva tabtslyatsii a leggyakoribb hiba a sok kezdő felhasználók számára.

Általában, a csapatok vannak a szabályok, hogy szolgálja előfeltételei és hozzon létre egy fájlt a cél, ha bármelyik előfeltételek volt modefitsirovan. Ugyanakkor a szabály, amely a csapat nem kell előfeltételei. Például tipikusan abból a célból tiszta ( „tisztító”), amely a törlési parancs nem lehet előfeltétele.

A szabály (szabály) leírja, hogy mikor és hogyan kell frissíteni a felsorolt ​​fájlok, mint a cél. Létrehozásához vagy frissítéséhez a cél, hogy elvégzi a szabály parancsokat az előfeltételeket a bemenet. A szabály is leírják, hogyan keresetet kell végezni.

Amellett, hogy a szabályok, make-fájl tartalmazhat egyéb szerkezetek, azonban egy egyszerű make-fájl állhat pusztán szabályokat. Szabályzat tűnhet kissé bonyolultabb, mint a minta, de ezek mind többé-kevésbé megfelelnek neki az ismertetett felépítés.

Az alábbiakban egy példa egy egyszerű make-fájl, amely leírja, hogy a futtatható fájl szerkesztése függ nyolc object fájlokat, ami viszont függ a nyolc érintett forrás fájlokat és három header fájlokat.

Ebben a példában a fejléc defs.h fájl tartalmazza az összes forrás fájlokat. Command.h header fájl szerepel csak a forrás fájlokat, amelyek kapcsolódnak a szerkesztési parancsok és buffer.h fájl - csak „alacsony szintű” fájlokat közvetlenül működik a szerkesztés puffer.

Az olvashatóság javítása érdekében, a hosszú sorok már két részre oszlik egy backslash egy újsor.

Ahhoz, hogy ezt a make-fájlban hozza létre egy végrehajtható fájlt szerkeszteni. kell utasítani

Ahhoz, hogy távolítsa el a futtatható és object fájlokat a projekt könyvtárban adja ki a következő parancsot:

Ebben a példában, célkitűzések, különösen a tárgy fájlok és main.o kbd.o. és szerkeszteni egy futtatható fájl. Előfeltételek közé fájlok, például main.c és defs.h. Minden objektum fájl, sőt, mind a cél, és előfeltétele. Példák a parancsok lehet cc-C main.c és cc -C kbd.c.

Ha a cél egy fájlt, akkor újra kell fordítani, vagy újralinkelt amikor megváltozott annak bármely előfeltételei. Ezen kívül minden előfeltételnek magukat automatikusan generált frissíteni kell az első. Példánkban a futtatható fájl szerkesztése függ nyolc objektum fájlok; main.o objektum fájl függ a forrás fájlt main.c és defs.h header fájlt.

Minden vonal, amely egy célt, és előfeltételek, majd egy sort a csapat. Ezek a parancsok azt mutatják, hogy szükség van, hogy frissítse a cél fájlt. Az elején minden sor, amely a parancs must tab karaktert. A jelenléte a tab karaktert jellemző, amely megkülönbözteti a make parancs sorokat más vonalak make-fájlt. Tartsuk szem előtt, hogy nem teszi a legkisebb ötlet, hogy ezeket a parancsokat működik. Ezért a felelősséget az a tény, hogy a csapat végre a szükséges frissítést a cél fájl teljesen rajtad múlik. Márka típus egyszerűen veszi a parancsot a szabályban meghatározott, ha a cél frissíteni kell.

A cél nem az, hogy tisztítsa meg a fájlt, és a név a cselekvés. Mivel a rendes szerelés programot ez az intézkedés nem szükséges, a célja a tiszta nem előfeltétele bármely szabályokat. Ezért győződjön nem „touch” a szabály, amíg meg nem kifejezetten azt mondta, hogy erre. Megjegyzendő, hogy ez a szabály nem csak nem előfeltétel, de önmagában nem tartalmaz semmilyen előfeltételeket. Így az egyetlen ez a szabály - az ezek megvalósítását parancsok benne. Célok, amelyek nem fájlokat, és intézkedésekre van szükség nevek elvont célokat (hamis célok). Abstract célokat részletesen tárgyaljuk a szakasz az absztrakt cél. A parancs sikertelen leírja, hogyan okoz make hogy figyelmen kívül hagyja, hogy a hibák előfordulhatnak, ha fut az rm parancsot és más parancsokat.

változók felhasználásával

A fenti példában, a szabály szerkesztés, akkor kétszer kellett felsorolni listáját objektum fájlok:

Az ilyen párhuzamos tele hibákkal. Amikor új objektumot a projekt fájlt, akkor add hozzá az egyik listát, és felejtsd el a többi. Annak érdekében, hogy megszüntesse a valószínűsége, hogy ez a kockázat és egyszerűsítése make-fájl változókat használjuk. A változók (változók) teszi, hogy amint azonosító szöveget, majd ismételten a megfelelő helyen).

Az általános gyakorlat az építési make-fájlokat, hogy egy változó nevű tárgyat. Tárgyakat. objs. Objs. obj. vagy OBJ. amely tartalmaz egy listát az összes objektum fájlok. Például:

Továbbá, amikor szüksége lesz egy lista objektum fájlok, akkor a változó értékeit használva $ bejegyzések (objektumok):

További építmények célok

Gyakran a make-fájlban is szerepel más célok mellett összeállítása:

utótag szabályok

Utótag szabályok - ez a másik terület, amelyben meg kell eldönteni, hogy írjon szabvány -files hogy vagy használja GNU kiterjesztés. Normál utótag szabályok sokkal korlátozottabb, mint a GNU sablon szabályokat, de sok esetben a standard utótag szabályok hasznosak lehetnek. Ezen túlmenően, a minta szabályokat nem minden változatának make. Utótag szabályok a következők:

sd:
$ (CC) -c $ (CFLAGS) $ (CPPFLAGS) -o $ @ $<
.Végződések. a .o

Ez a szabály kimondja (ha ne érintse meg a felesleges rész), hogy kellene, ha nem volt más egyértelmű, viszont az AS fájlt az AO futtatásával a mellékelt parancssorban. Minden .c fájlt kell kezelni, amennyiben egyértelműen szerepel a függőség a megfelelő .o fájl a make-fájlokat.
Ez az utótag szabály bemutatunk egy másik lehetőség, hogy - az automatikus változók. Egyértelmű, hogy meg kell találni a módját, hogy helyettesítse a függőség és a céltárgy a parancssorba. Az automatikus változó $ @ működik, mint egy cél, $<выступает в качестве первой зависимости, а $^ представляет все зависимости.
Vannak más automatikus változók, melyek tárgyalt a vezető tenni. Minden automatikus változók felhasználhatók a szokásos szabályok, valamint a toldalék és a minta szabályokat. Az utolsó sor egy példa a másik .SUFFIXES irányelv azt mondja, hogy ezt .c és .o utótagok kell használni, hogy megtaláljuk a módját, hogy kapcsolja a meglévő forrás fájlokat a megfelelő célokat.
Minta szabályok erősebb, tehát egy kicsit bonyolultabb, mint utótag szabályokat. Az alábbiakban egy minta megegyezik a minta szabály a fenti utótag szabályokat.

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

A legtöbb nagy léptékű projektek nyílt forráskódú eszközök használata Automake, Autoconf és Libtool. Ezek az eszközök gyűjteménye ismereteket a funkciók a különböző rendszerek és szabványok, a közösség, amely segíthet építkezéseken. Így kell írni egy kis kódot, a projekt-specifikus. Például Automake írásban telepíteni és eltávolítani célokat. Autoconf automatikusan érzékeli a képességeit a rendszer, és konfigurálja a szoftver annak megfeleltetési rendszer, a Libtool figyeli különbségek kezelésének megosztott könyvtárak különböző rendszereket.

Kapcsolódó cikkek