Programozó Toolkit linux make

A segédprogram automatikusan meghatározza, hogy mely darabokat egy nagy program kell újrafordítani, és parancsokat újrafordítani őket. A leggyakrabban használt, hogy a C-összeállítás programok és olyan szolgáltatásokat tartalmaz, amely kifejezetten az ilyen feladatokat, de akkor használja, hogy bármilyen programozási nyelv. Sőt, az alkalmazás a make segédprogram nem korlátozódik a programokat. Ee lehet használni, hogy leírja azokat a feladatokat, ahol néhány fájlt kell automatikusan generált másoktól, ha megváltoztatjuk őket.

Használat előtt. akkor létre kell hozni egy fájlt úgynevezett make-fájlt. amely leírja közötti kapcsolatok fájlokat a program és a parancsokat tartalmazza frissítésére minden fájlt. Jellemzően a futtatható fájl függ a tárgy fájlokat, ami viszont függ a forrás fájlokat és header fájlokat. Hogy a név GNUmakefile ajánlott make-fájlt. Makefile vagy Makefile. és a keresési megy ebben a sorrendben. Ha kell használni egy egyéni nevet, akkor lehet továbbítani egyértelműen a -f opciót.
Ha a make-fájl már meg van írva, elég, hogy végre a könyvtár, amelyben ez a make parancs. Egyszerű make-fájl áll szabályok (utasítások), a következő formában:

VAR = érték. CÉL. Függőséget. TEAM 1
PARANCS 2 = változó érték. CÉL. Függőséget. Parancs 1 parancs 2
stb

hogy az [Opciók] [Variable = 'abc'] [cél]

Szögletes zárójelben a opcionális jelenlétében ez a rész.
A cél - a név a cél, hogy végre kell hajtani.
Változó = 'abc' -pereopredelenie változókat. Az értékek a változók magasabb prioritása van beírni a parancssorba, mint a meghatározás a make-fájlt.
beállítások:
-f fájl - egyértelmű hivatkozást név make-fájlt. ha a munka nincs megadva, akkor a keresett GNUmakefile fájlokat. Makefile vagy Makefile.
-n - utánzata akció nincs igazi teljesítmény, használjuk debug.
-t - váltás a cél módosítás ideje anélkül, hogy ténylegesen végrehajtó.
-q - ellenőrizze, hogy frissíteni kell a célt anélkül, hogy ténylegesen végrehajtó.

Szabályok írása Makefile

A szabályok sorrendje lényegtelen. Alapértelmezésben a fő cél az, hogy a célja az első szabály az első make-fájlokat. Ha az első szabály több cél, csak az első célpont vesszük az alapértelmezett cél. A cél, kezdve a lényeg, nem használják ki célul alapértelmezés szerint, ha nem tartalmaz egy vagy több, a karakter „/”, azaz meghatározza a fájl elérési útvonalát; Ezen túlmenően, az alapértelmezett nem használják a cél, meghatározó minta szabályokat.
Mivel a cél, vagy függőségi használhatja fájlok listája szóközzel elválasztva vagy minta héjában stílusban.
Minták értelmezik idején a szabály, ha rendelni egy változó mintázat értelmezést nem lesz hozzárendelve a fájl listát a változó használt speciális funkciót helyettesítő.


tárgyak: = $ (joker * .o
edit: * .o
cc -o szerkesztés * .o

Az automatikus generációs függőségek header fájlokat a C nyelvet, akkor gcc -M file.c parancs vagy gcc -MM file.c. A második kiviteli nem termel a rendszertől függően header fájlokat. A parancs használható automatikus változók. Ezek a változók újra kell számolni az egyes szabályok betartására alapján objektív szabályok és függőségek.

Az alapértelmezett művelet.

#default cél - file szerkesztése
szerkesztés. main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
cc -o szerkesztés main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

main.o. main.c defs.h
cc -c main.c
kbd.o. kbd.c defs.h command.h
cc -c kbd.c
command.o. command.c defs.h command.h
cc -c command.c
display.o. display.c defs.h buffer.h
cc -c display.c
insert.o. insert.c defs.h buffer.h
cc -c insert.c
search.o. találatot defs.h buffer.h
cc -c találatot
files.o. files.c defs.h buffer.h command.h
cc -c files.c
utils.o. utils.c defs.h
cc -c utils.c
tiszta.
rm szerkesztés main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

Alapértelmezésben hogy kezdődik az első szabály (nem számítva szabályokat, amelynek cél neve kezdődik „”). Ezt nevezik az alapértelmezett cél. A mi esetünkben ez általában szerkesztés. Ha szerkeszti a fájl újabb object fájlt, amelyektől függ, akkor semmi sem fog történni. Ellenkező esetben, mielőtt teljesen feldolgozza ezt a szabályt, meg kell ismétlődő módon dolgozza fel szabályokat a fájlokat, amelyek a szerkesztést. Mindegyik fájl feldolgozása összhangban saját szabályokkal. Újrafordítás kell tenni, ha a forrás fájlt vagy a fejléc fájlok között említett függőségek frissítve legkésőbb a tárgy fájlt, vagy ha a tárgy fájl nem létezik.
Tiszta szabály nem illik minden fájlt kell létrehozni, és ezért tiszta vagy nem attól függ, semmit maga nem szerepel a listán a függőségek. Ha az alapértelmezett indítási nem nevezhető tiszta. Azt végrehajtani, kifejezetten meg kell adnia a cél, ha fut is: make clean
A rövidség kedvéért, akkor a változók és alapértelmezett műveleteket (implicit szabály)

tárgyak = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

szerkesztés. $ (Objektumok)
cc -o szerkesztés $ (objektumok)
main.o. defs.h
kbd.o. defs.h command.h
command.o. defs.h command.h
display.o. defs.h buffer.h
insert.o. defs.h buffer.h
search.o. defs.h buffer.h
files.o. defs.h buffer.h command.h
utils.o. defs.h
.PHONY. tiszta
tiszta.
-rm szerkesztés $ (objektumok)

A változó objektumok szabad használni, ha egy írásos listát objektum fájlok, és az objektum fájlok a beépített hogy implicit alapértelmezett szabály

file.c: file.o cc -c file.c

Special Purpose .PHONY egy beépített make, és meghatározzák annak függvényében, hogy a célok-nevek, amelyek nem egyezik a fájlok formájában. Ha ezt a szabályt, hogy kihagyja, akkor létre a fájl az aktuális könyvtárban nevével tiszta blokk végrehajtásának make clean.
Az alapértelmezett politikája lehetővé teszi, hogy változtatni a stílusát függőség feljegyzések:

tárgyak = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

szerkesztés. $ (Objektumok)
cc -o szerkesztés $ (objektumok)

$ (Objektumok). defs.h
kbd.o command.o files.o. command.h
display.o insert.o search.o files.o. buffer.h

Ez a rekord azt jelenti, hogy az összes objektum fájlok függ fejlécfájlba defs.h. de a további függőségek ellenőrizzük néhány közülük.