Hensikten med verktøyverktøyet er å bestemme hvilke brikker av et stort program som skal kompileres og gi kommandoer om å kompilere dem. Håndboken beskriver GNU-implementeringen av make, som ble skrevet av Richard Stallman og Roland McGrath. Disse eksemplene viser C-programmer siden de er mest vanlige, men du kan bruke lag med hvilket som helst programmeringsspråk hvis kompilator kan kjøres med en shell-kommando. Faktisk er det ikke begrenset til programmer. Du kan bruke den til å beskrive en hvilken som helst oppgave der noen filer må oppdateres automatisk fra andre når de andre endres.
Merk: Denne siden er et utdrag av dokumentasjonen av GNU make . Den oppdateres bare av og til fordi GNU-prosjektet ikke bruker nroff. For fullstendig, gjeldende dokumentasjon, se info filen make.info som er laget av Texinfo kildefilen make.texinfo.
Syntaks og forberedelse av verktøyverktøy
gjøre -f Makefile alternativ … mål …
For å forberede seg til å bruke make, må du skrive en fil som heter makefile som beskriver forholdene mellom filene i programmet og angir kommandoene for å oppdatere hver fil. Vanligvis blir en kjørbar fil oppdatert fra objektfiler, som i sin tur gjøres ved å kompilere kildefiler.
Når en passende makefile eksisterer, hver gang du endrer noen kildefiler, er denne enkle shell-kommandoen gjøre nok til å utføre alle nødvendige rekompilasjoner. Maskinprogrammet bruker makefile-databasen og de siste modifikasjonstider for filene for å bestemme hvilken av filene som skal oppdateres. For hver av disse filene, utsteder den kommandoene som er registrert i databasen.
Maskinverktøyet utfører kommandoer i makefile for å oppdatere ett eller flere målnavn, hvor Navn er vanligvis et program. Hvis nei-f alternativet er til stede, gjør vil se etter makefilesGNUmakefile, Makefile, ogMakefile, i den rekkefølgen.
Vanligvis bør du ringe din makefile enten makefile eller Makefile. (Det anbefales å bruke Makefile fordi det vises fremtredende nær starten av en katalogoppføring, like i nærheten av andre viktige filer somREADME.) Fornavnet-sjekket, GNUmakefile, anbefales ikke for de fleste makefiles. Du bør bruke dette navnet hvis du har en makefile som er spesifikk for GNU make og vil ikke bli forstått av andre versjoner av make. Hvis makefile er -, standardinngangen leses.
De gjøre verktøyet oppdaterer et mål hvis det avhenger av forutgående filer som har blitt endret siden målet ble sist endret, eller hvis målet ikke eksisterer.
alternativer
De -b og -m Alternativer ignoreres for kompatibilitet med andre versjoner av make.
-C dir vil bytte til katalog dir før du leser makefiles eller gjør noe annet. Hvis flere-C alternativer er spesifisert, hver tolkes i forhold til den forrige:-C/ -C osv tilsvarer-C / etc. Dette brukes vanligvis med rekursive invokasjoner av make.
De -d alternativet vil skrive ut feilsøkingsinformasjon i tillegg til normal behandling. Feilsøkingsinformasjonen angir hvilke filer som vurderes for remaking, hvilke filtider som blir sammenlignet, og hvilke resultater, hvilke filer som faktisk må gjenopprettes, hvilke implisitte regler blir vurdert og som blir brukt - alt er interessant om hvordan du bestemmer deg for hva du skal gjøre .
De -e alternativ gir variabler hentet fra miljøpreferansen over variabler fra makefiles.
De -f fil alternativ bruk fil som en makefile.
De -Jeg alternativet ignorerer alle feil i kommandoer som utføres for å gjenopprette filer.
De -JEG dir alternativet angir en katalog dir å søke etter inkludert makefiler. Hvis flere-JEG Alternativer brukes til å spesifisere flere kataloger, katalogene blir søkt i den angitte rekkefølgen. I motsetning til argumentene til andre flagg av make, kataloger gitt med-JEG flagg kan komme direkte etter flagget:-Idir er tillatt, så vel som-Jeg dir . Denne syntaksen er tillatt for kompatibilitet med C-forprosessoren-JEG flagg.
De -j jobber alternativ angir antall jobber (kommandoer) for å kjøre samtidig. Hvis det er mer enn en-j alternativ, den siste er effektiv. Hvis-j alternativet gis uten et argument, gjør ikke begrense antall jobber som kan kjøre samtidig.
De -k Alternativet fortsetter så mye som mulig etter en feil; mens målet som mislyktes, og de som er avhengige av det, ikke kan gjenopprettes, kan de andre avhengighetene til disse målene behandles alt det samme.
De l og -l belastning Alternativer angir at ingen nye jobber (kommandoer) skal startes hvis det er andre jobber som kjører, og last gjennomsnittet er minstlaste (et flytende punktnummer). Med ingen argument fjerner den en tidligere belastningsgrense.
De -n alternativet skriver ut kommandoene som skal utføres, men utfører ikke dem.
De -o fil alternativet gjenoppretter ikke fil selv om den er eldre enn dens avhengigheter, og gjenoppretter ikke noe på grunn av endringer i fil . I hovedsak blir filen behandlet som veldig gammel og reglene ignoreres.
De -p alternativet skriver ut databasen (regler og variabelverdier) som kommer fra lesing av makefilene. Den utfører så som vanlig eller som angitt på annen måte.Dette skriver også ut versionsinformasjonen gitt av-V bytte (se nedenfor). For å skrive ut databasen uten å prøve å gjenopprette filer, brukgjøre -p -f / dev / null .
De -q alternativ setter spørsmålet modus. Ikke kjør noen kommandoer eller skriv ut noe, bare returner en utgangsstatus som er null hvis de angitte målene allerede er oppdaterte, ikke noe annet.
De -r alternativet eliminerer bruken av de innebygde implisitte reglene. Fjerner også standardlisten over suffikser for suffiksregler.
De -s alternativet stenger operasjonen. Det skriver ikke ut kommandoene etter hvert som de utføres.
De -S alternativet kansellerer effekten av-k alternativ. Dette er aldri nødvendig unntatt i en rekursiv make hvor-k kan bli arvet fra toppnivået via MAKEFLAGS eller hvis du setter inn-k i MAKEFLAGS i ditt miljø.
De -t alternativet berører filer (markerer dem oppdatert uten å endre dem) i stedet for å kjøre kommandoer. Dette brukes til å late som at kommandoene ble gjort, for å lure fram fremtidige henvendelser om å lage.
De -V alternativet skriver ut versjonen av make-programmet pluss en opphavsrett, en liste over forfattere, og en melding om at det ikke er noen garanti.
De -w alternativet skriver ut en melding som inneholder arbeidskatalogen før og etter annen behandling. Dette kan være nyttig for å spore ned feil fra kompliserte reir av rekursiv make kommandoer.
De W fil alternativet later som målet fil har nettopp blitt endret. Når det brukes med-n flagg, dette viser deg hva som ville skje hvis du skulle endre den filen. Uten-n, det er nesten det samme som å kjøre ata på kommandoen på den oppgitte filen før du kjører, bortsett fra at modifikasjonstiden bare endres i fantasien til make.