Skip to main content

Forstå Unix og Linux Command: make

C Programming Tutorial 6 - Intro to UNIX/Linux - Part 1 (Juni 2026)

C Programming Tutorial 6 - Intro to UNIX/Linux - Part 1 (Juni 2026)
Anonim

Formålet med make-utilityen er at bestemme, hvilke stykker af et stort program der skal rekompileres og udstede kommandoer til at kompilere dem. Håndbogen beskriver GNU-implementeringen af ​​make, som blev skrevet af Richard Stallman og Roland McGrath. Disse eksempler viser C-programmer, da de er mest almindelige, men du kan bruge make med ethvert programmeringssprog, hvis kompilator kan køres med en shell-kommando. Faktisk er gør ikke begrænset til programmer. Du kan bruge den til at beskrive enhver opgave, hvor nogle filer skal opdateres automatisk fra andre, når de andre ændres.

Bemærk: Denne side er et uddrag af dokumentationen af ​​GNU make . Den opdateres kun lejlighedsvis, fordi GNU-projektet ikke bruger nroff. For fuldstændig, aktuel dokumentation henvises til info filen make.info, som er lavet af Texinfo kildefilen make.texinfo.

Syntaks og forberedelse af make utility

lave -f makefile mulighed … mål …

For at forberede sig på at bruge make skal du skrive en fil kaldet makefile, der beskriver forholdene mellem filer i dit program og angiver kommandoerne for opdatering af hver fil. Typisk opdateres en eksekverbar fil fra objektfiler, som igen laves ved at kompilere kildefiler.

Når der findes en passende makefile, hver gang du ændrer nogle kildefiler, er denne simple shell-kommando lave er tilstrækkeligt til at udføre alle nødvendige rekompileringer. Make-programmet bruger makefile-databasen og de sidste modifikationstider for filerne til at bestemme, hvilke filer der skal opdateres. For hver af disse filer udgiver den kommandoer, der er optaget i databasen.

Make-værktøjet udfører kommandoer i makefilen for at opdatere et eller flere målnavne, hvor navn er typisk et program. Hvis nej-f mulighed er til stede, gør vil se efter makefilesGNUmakefile, makefile, ogMakefilei den rækkefølge.

Normalt skal du ringe til din makefile, enten makefile eller Makefile. (Det anbefales at bruge Makefile fordi det vises fremtrædende nær begyndelsen af ​​en mappeliste, lige i nærheden af ​​andre vigtige filer som f.eksREADME.) Fornavnet kontrolleres, GNUmakefile, anbefales ikke til de fleste makefiles. Du skal bruge dette navn, hvis du har en makefile, der er specifik for GNU make og ikke forstås af andre versioner af make. Hvis makefile er -, standardindgangen læses.

Det lave hjælpeprogram opdaterer et mål, hvis det afhænger af forudsætningsfiler, der er blevet ændret, siden målet blev sidst ændret, eller hvis målet ikke eksisterer.

Muligheder

Det -b og -m muligheder ignoreres for kompatibilitet med andre versioner af make.

-C dir vil ændre til mappen dir før du læser makefiles eller gør noget andet. Hvis flere-C indstillinger er angivet, hver fortolkes i forhold til den foregående:-C/ -C osv svarer til-C / etc. Dette bruges typisk med rekursive invokationer af make.

Det -d mulighed vil udskrive debugging information ud over normal behandling. Fejlsøgningsoplysningerne siger, hvilke filer der tages i betragtning for at genbruge, hvilke filtider der sammenlignes, og med hvilke resultater, hvilke filer der faktisk skal genoprettes, hvilke implicitte regler overvejes, og som anvendes - alt er interessant, hvordan man beslutter hvad man skal gøre .

Det -e option giver variabler taget fra miljøpræference over variabler fra makefiles.

Det -f fil valgmuligheder fil som en makefile.

Det -jeg mulighed ignorerer alle fejl i kommandoer, der udføres til genindspilning af filer.

Det -JEG dir mulighed angiver en mappe dir at søge efter inkluderede makefiles. Hvis flere-JEG Valgmulighederne bruges til at angive flere mapper, og katalogerne søges i den angivne rækkefølge. I modsætning til argumenterne til andre flaglag af make, mapper givet med-JEG flag kan komme direkte efter flagget:-Idir er tilladt, samt-Jeg dir . Denne syntaks er tilladt for kompatibilitet med C preprocessorens-JEG flag.

Det -j job indstilling angiver antallet af job (kommandoer) til at køre samtidigt. Hvis der er mere end en-j mulighed, den sidste er effektiv. Hvis-j mulighed er givet uden et argument, make vil ikke begrænse antallet af job, der kan køre samtidigt.

Det -k mulighed fortsætter så meget som muligt efter en fejl mens målet, der mislykkedes, og de der afhænger af det, ikke kan genoprettes, kan de andre afhængigheder af disse mål behandles ens.

Det -l og -l belastning indstillinger angiver, at der ikke skal startes nye job (kommandoer), hvis der er andre job, der kører, og belastningsgenomsnittet er mindstbelastning (et flydende punktnummer). Med ingen argument fjerner den en tidligere belastningsgrænse.

Det -n indstillingen udskriver de kommandoer, der skal udføres, men udfører dem ikke.

Det -o fil indstillingen genopretter ikke fil selvom den er ældre end dens afhængigheder og ikke genindfører noget på grund af ændringer i fil . I det væsentlige behandles filen som meget gammel, og dens regler ignoreres.

Det -p option udskriver databasen (regler og variabelværdier), der er resultatet af at læse makefiles. Den udfører så som sædvanlig eller som angivet andet.Dette udskriver også versionsinformationen fra-v skifte (se nedenfor). Hvis du vil udskrive databasen uden at forsøge at genbruge filer, skal du brugelave -p -f / dev / null .

Det -q valgmulighed sæt spørgsmålstilstand. Kør ikke kommandoer eller udskriv noget, skal du bare returnere en exitstatus, der er nul, hvis de angivne mål allerede er opdaterede, ikke andetsteds.

Det -r mulighed fjerner brugen af ​​de indbyggede implicitte regler. Fjerner også standardlisten over suffikser for suffiksregler.

Det -s indstilling afbryder operationen. Det udskriver ikke kommandoerne, da de udføres.

Det -S option annullerer effekten af-k mulighed. Dette er aldrig nødvendigt undtagen i et rekursivt mærke hvor-k kan være arvet fra topniveauet gør via MAKEFLAGS, eller hvis du indstiller-k i MAKEFLAGS i dit miljø.

Det -t Valg berører filer (markerer dem ajour uden at ændre dem virkelig) i stedet for at køre deres kommandoer. Dette bruges til at foregive at kommandoerne blev gjort for at narre fremtidige invokationer af make.

Det -v option udskriver versionen af ​​make-programmet plus en ophavsret, en liste over forfattere og en meddelelse om, at der ikke er nogen garanti.

Det -w indstillingen udskriver en meddelelse, der indeholder arbejdsmappen før og efter anden behandling. Dette kan være nyttigt til at spore ned fejl fra komplicerede reder af rekursiv fabrikat kommandoer.

Det -W fil mulighed foregiver at målet fil er netop blevet ændret. Når den bruges sammen med-n flag, dette viser dig, hvad der ville ske, hvis du skulle ændre den pågældende fil. Uden-n, det er næsten det samme som at køre arøre ved kommando på den givne fil, før du kører, bortset fra at ændringstiden kun ændres i fantasien hos make.