Het doel van het make-hulpprogramma is om automatisch te bepalen welke stukjes van een groot programma opnieuw moeten worden gecompileerd en de opdrachten uit te geven om ze opnieuw te compileren. De handleiding beschrijft de GNU-implementatie van make, die is geschreven door Richard Stallman en Roland McGrath. Deze voorbeelden tonen C-programma's, omdat deze het meest voorkomen, maar u kunt Make gebruiken met elke programmeertaal waarvan de compiler kan worden uitgevoerd met een shell-opdracht. In feite is make niet beperkt tot programma's. U kunt het gebruiken om elke taak te beschrijven waarbij sommige bestanden automatisch van anderen moeten worden bijgewerkt wanneer de andere veranderen.
Notitie: Deze pagina is een uittreksel van de documentatie van GNU make . Het wordt slechts af en toe bijgewerkt omdat het GNU-project nroff niet gebruikt. Voor volledige, actuele documentatie, raadpleegt u het infobestand make.info dat is gemaakt van het Texinfo bronbestand make.texinfo.
Syntaxis en voorbereiding van make-utility
maken -f makefile keuze … doelwit …
Om je voor te bereiden op het gebruik van make, moet je een bestand schrijven met de naam makefile dat de relaties beschrijft tussen bestanden in je programma en de opdrachten voor het updaten van elk bestand. Meestal wordt een uitvoerbaar bestand bijgewerkt vanuit objectbestanden, die op hun beurt worden gemaakt door het compileren van bronbestanden.
Als er eenmaal een geschikte makefile bestaat, wordt elke keer dat u enkele bronbestanden wijzigt, dit eenvoudige shell-commando maken volstaat om alle noodzakelijke hercompilaties uit te voeren. Het make-programma maakt gebruik van de makefile-database en de laatste wijzigingstijden van de bestanden om te beslissen welke van de bestanden moeten worden bijgewerkt. Voor elk van deze bestanden worden de opdrachten uit de database uitgegeven.
Het make-hulpprogramma voert opdrachten uit in de makefile om een of meer doelnamen bij te werken, waar naam is typisch een programma. Als Nee-f optie is aanwezig, make zal zoeken naar de makefilesGNUmakefile, makefile, enMakefile, in die volgorde.
Normaal gesproken zou je je makefile ofwel makefile ofwel Makefile moeten noemen. (Het wordt aanbevolen om Makefile te gebruiken omdat het prominent in de buurt van het begin van een directorylijst wordt weergegeven, vlak bij andere belangrijke bestanden zoalsLeesmij.) De eerste gecontroleerde naam, GNUmakefile, wordt niet aanbevolen voor de meeste makefiles. Je zou deze naam moeten gebruiken als je een makefile hebt die specifiek is voor GNU make en niet zal worden begrepen door andere versies van make. Als makefile is -, de standaardinvoer wordt gelezen.
De maken utility werkt een doelwit bij als dit afhankelijk is van vereiste bestanden die zijn gewijzigd sinds het doelwit voor het laatst is gewijzigd, of als het doelwit niet bestaat.
opties
De -b en -m opties worden genegeerd voor compatibiliteit met andere versies van make.
-Cir zal veranderen in directory map voordat de makefiles worden gelezen of iets anders wordt gedaan. Als meerdere-C opties worden gespecificeerd, elke wordt geïnterpreteerd ten opzichte van de vorige:-C/ -C enz is gelijk aan-C / enz. Dit wordt meestal gebruikt met recursieve aanroepingen van make.
De -d optie zal debuginformatie afdrukken naast de normale verwerking. De foutopsporingsinformatie geeft aan met welke bestanden rekening wordt gehouden bij het opnieuw maken, welke bestandstijden worden vergeleken en met welke resultaten, welke bestanden opnieuw moeten worden gemaakt, welke impliciete regels worden overwogen en die worden toegepast - alles wat interessant is over hoe het besluit beslist wat te doen .
De -e optie geeft variabelen uit de omgevingsvoorrang boven variabelen uit makefiles.
De -f het dossier gebruik van opties het dossier als een makefile.
De -ik optie negeert alle fouten in opdrachten die worden uitgevoerd om bestanden opnieuw te maken.
De -IK dir optie geeft een map aan dir om te zoeken naar opgenomen makefiles. Als meerdere-IK opties worden gebruikt om verschillende mappen op te geven, de mappen worden in de opgegeven volgorde doorzocht. In tegenstelling tot de argumenten voor andere vlaggen van make, mappen opgegeven met-IK vlaggen kunnen direct na de vlag komen:-Idir is toegestaan, evenals- Ik begin . Deze syntaxis is toegestaan voor compatibiliteit met de C-preprocessor-IK vlag.
De -j banen optie specificeert het aantal taken (opdrachten) dat tegelijkertijd moet worden uitgevoerd. Als er meer dan één isj optie, de laatste is effectief. Als hetj optie wordt gegeven zonder een argument, make beperkt niet het aantal taken dat gelijktijdig kan worden uitgevoerd.
De -k optie gaat zoveel mogelijk verder na een fout; terwijl het doel dat is mislukt en degenen die ervan afhankelijk zijn, niet opnieuw kunnen worden gemaakt, kunnen de andere afhankelijkheden van deze doelen toch worden verwerkt.
De l en - Ik laad opties geven aan dat er geen nieuwe taken (opdrachten) moeten worden gestart als er andere taken worden uitgevoerd en het laadgemiddelde minstensladen (een drijvend-kommagetal). Zonder argument verwijdert het een vorige laadlimiet.
De -n optie drukt de opdrachten af die zouden worden uitgevoerd, maar voert ze niet uit.
De -O het dossier optie maakt het niet opnieuw het dossier zelfs als het ouder is dan de afhankelijkheden ervan, en niets maakt als gevolg van veranderingen in het dossier . In wezen wordt het bestand als erg oud behandeld en worden de regels ervan genegeerd.
De -p optie drukt de database af (regels en variabelenwaarden) die resulteert uit het lezen van de makefiles. Het wordt vervolgens uitgevoerd zoals gewoonlijk of zoals anders aangegeven.Hiermee wordt ook de versie-informatie afgedrukt die wordt gegeven door de-v schakelaar (zie hieronder). Als u de database wilt afdrukken zonder te proberen bestanden opnieuw te maken, gebruikt umaken -p -f / dev / null .
De -q optie stelt vraagmodus in. Voer geen opdrachten uit of druk niets af, retourneer gewoon een exit-status die nul is als de opgegeven doelen al up-to-date zijn, anders niet.
De -r optie elimineert het gebruik van de ingebouwde impliciete regels. Wist ook de standaardlijst met achtervoegsels voor achtervoegselregels.
De -s optie schakelt de bewerking uit. Het drukt de opdrachten niet af terwijl ze worden uitgevoerd.
De -S optie annuleert het effect van de-k keuze. Dit is nooit nodig, behalve in een recursief merk waar-k kan worden overgenomen van het merk op het hoogste niveau via MAKEFLAGS of als u instelt-k in MAKEFLAGS in uw omgeving.
De -t optie raakt bestanden aan (markeert ze up-to-date zonder ze echt te veranderen) in plaats van hun opdrachten uit te voeren. Dit wordt gebruikt om te doen alsof de commando's zijn gedaan om toekomstige aanroepingen van make voor de gek te houden.
De -v optie drukt de versie van het make-programma af plus een copyright, een lijst met auteurs en een kennisgeving dat er geen garantie is.
De -w optie drukt een bericht af met de werkdirectory voor en na andere verwerking. Dit kan handig zijn om fouten uit gecompliceerde nesten van recursieve merken op te sporen commando's.
De -W het dossier optie beweert dat het doelwit het dossier is zojuist gewijzigd. Wanneer gebruikt met de-n vlag geeft dit aan wat er zou gebeuren als u dat bestand zou wijzigen. Zonder-n, het is bijna hetzelfde als een aaanraken commando op het opgegeven bestand voordat uitvoeren make, behalve dat de wijzigingstijd alleen in de verbeelding van make wordt gewijzigd.




