Makefile | |
---|---|
MIME -type | tekst/x-makefil |
Formattype | Monteringsautomatisering |
Standard(er) | POSIX |
makefile er en fil, der indeholder et sæt instruktioner, der bruges af make - værktøjet i byggeautomatiseringsværktøjssættet .
Oftest indeholder en make- fil instruktioner til make -værktøjet om, hvordan man kompilerer og linker programmet. For eksempel, for C / C++ programmeringssprog , skal en C- eller C++-kildefil genkompileres, hver gang den ændres. Hvis en header-fil ændres , skal hver C/C++-kildefil, der indeholder den, blive genkompileret for at være sikker. Hver kompilering opretter en objektfil svarende til kildefilen. Endelig, hvis kildefilen er blevet kompileret, skal alle objektfiler, uanset om de er nyoprettede eller gemt fra tidligere kompileringer, linkes sammen for at samle den nye programeksekverbare [1] . Disse instruktioner, sammen med deres afhængigheder, er specificeret i makefilen . Hvis ingen af de filer, der kræves til samling, er ændret siden sidste kompilering, sker der ikke noget under kompileringen. Til store projekter kan brugen af make-filer reducere applikationens byggetid betydeligt ved at ændre nogle få kildefiler.
Make-filer stammer fra Unix-lignende systemer og er fortsat det primære middel til at bygge programmer i disse miljøer.
Windows understøtter forskellige slags make-filer gennem nmake -værktøjet . Standardmakefiler fra Unix-lignende operativsystemer kan køres på Windows-operativsystemet i Cygwin -miljøet .
Make-filer består af 5 komponenter: eksplicitte regler , implicitte regler , variable definitioner , direktiver og kommentarer .
Makefilen indeholder "regler" i følgende form:
mål : afhængigheder systemkommando ( r )Målet er normalt navnet på en fil, der er genereret af programmet; eksempler på mål er eksekverbare eller objektfiler. Målet kan også være navnet på den handling, der skal udføres, såsom "ren".
En afhængighed (også kaldet en forudsætning) er en fil, der bruges som input til at oprette et mål. Målet afhænger ofte af flere filer. En regel, der angiver en metode for et mål, må dog ikke have nogen forudsætninger. For eksempel er en regel, der indeholder en slettekommando, knyttet til et rent mål, der ikke har en forudsætning.
En systemkommando(r) (også kaldet en metode) er en handling, som make -værktøjet udfører . En metode kan indeholde mere end én kommando, enten på samme linje eller hver på sin egen linje.
makefile udføres med en kommando make, for eksempel make [options] [target1 target2 ...]. Som standard, når make søger efter en makefil, og hvis intet makefilnavn er angivet som argument, så prøver make følgende navne i rækkefølge: makefile og Makefile.
En simpel makefil, der beskriver, hvordan en eksekverbar, kaldet edit , afhænger af fire objektfiler, som igen afhænger af fire C-kilder og to header-filer.
edit : main . om kbd . o kommando . o display . o cc -o edit main.o kbd.o command.o display.o hoved.o : hoved . c defs . h cc -c hoved.c kbd.o : kbd . c defs . h kommando . h cc -c kbd.c command.o : kommando . c defs . h kommando . h cc -c kommando.c display.o : display . c defs . h cc -c display.c ren : rm edit main.o kbd.o command.o display.oFor at bruge denne make-fil til at oprette en eksekverbar redigeringsfil , skal du skrive kommandoen make. For at bruge denne make-fil til at fjerne en eksekverbar fil og alle objektfiler fra en mappe, skriv kommandoen make clean.