Skip to main content

Comprensió del comandament Unix i Linux: make

Anonim

L'objectiu de la utilitat de fer és determinar automàticament quines peces d'un programa gran s'han de recopilar i emetre els comandaments per tornar a compilar. El manual descriu la implementació GNU de make, que va ser escrita per Richard Stallman i Roland McGrath. Aquests exemples mostren programes C ja que són els més freqüents, però podeu utilitzar make amb qualsevol llenguatge de programació el compilador es pugui executar amb un comandament de shell. De fet, no es limiten als programes. Podeu utilitzar-lo per descriure qualsevol tasca on alguns fitxers s'han d'actualitzar automàticament d'altres sempre que els altres canvien.

Nota: Aquesta pàgina és un extracte de la documentació de GNU make . S'actualitza només ocasionalment perquè el projecte GNU no usa nroff. Per obtenir una documentació completa i actual, consulteu l'arxiu d'informació make.info que es fa a partir de l'arxiu font de Texinfo make.texinfo.

Sintaxi i preparació de fer utilitat

fer -f makefile opció … objectiu …

Per preparar-vos per utilitzar make, heu d'escriure un fitxer anomenat makefile que descrigui les relacions entre els fitxers del vostre programa i indiqui les ordres d'actualització de cada fitxer. Normalment, un fitxer executable s'actualitza des dels fitxers d'objectes, que al seu torn es realitzen mitjançant la compilació de fitxers d'origen.

Una vegada que existeix un fitxer de fitxer adequat, cada vegada que canvieu alguns fitxers d'origen, aquest senzill comandament de shell fer n'hi ha prou amb realitzar totes les recopilacions necessàries. El programa Make fa servir la base de dades makefile i els temps d'última modificació dels fitxers per decidir quins dels fitxers s'han d'actualitzar. Per a cadascun d'aquests fitxers, emet els comandaments registrats a la base de dades.

La utilitat de fabricació executa les ordres en el fitxer makefile per actualitzar un o més noms de destinació, on nom sol ser un programa. Si no-f l'opció està present, feu cercarà els fitxers makefileGNUmakefile, makefile, iMakefile, en aquest ordre.

Normalment haureu de trucar al vostre fitxer makefile o Makefile. (Es recomana utilitzar Makefile perquè apareix prominentment a prop de l'inici d'un llistat de directoris, just a prop d'altres fitxers importants com araREADME). El primer nom verificat, GNUmakefile, no es recomana per a la majoria de fitxers makefile. Heu d'utilitzar aquest nom si teniu un fitxer de fitxer específic de GNU make i no s'entén per altres versions de make. Si el fitxer makefile és -, es llegeix l'entrada estàndard.

El fer la utilitat actualitza un objectiu si depèn dels fitxers de requisits previs que hagin estat modificats des de la darrera modificació de l'objectiu o si el destinatari no existeix.

Opcions

El -b i -m S'ignoren les opcions de compatibilitat amb altres versions de make.

-C dir canviarà al directori del directori abans de llegir el makefiles o fer qualsevol altra cosa. Si és múltiple-C S'indiquen les opcions, cadascuna s'interpreta amb relació a l'anterior:-C/ -C etc és equivalent a-C / etc. Normalment s'utilitza amb invocacions recursives de make.

El -d l'opció imprimirà la informació de depuració a més del processament normal. La informació de depuració indica quins fitxers s'estan considerant per a la seva reestructuració, els temps d'arxiu que es comparen i amb quins resultats, quins fitxers realment s'han de reiniciar, quines regles implícites es consideren i quins s'apliquen: tot allò interessant sobre com decidir què fer .

El -e L'opció dóna variables que es prenen de la prioritat de l'entorn sobre variables de makefiles.

El -f dossier usos d'opcions dossier com un fitxer makefile.

El -i opció ignora tots els errors en comandes executats per tornar a carregar fitxers.

El -I dir L'opció especifica un directori dir per cercar fitxers makefile inclosos. Si n'hi ha diversos-I Les opcions s'utilitzen per especificar diversos directoris, els directoris es busquen en l'ordre especificat. A diferència dels arguments a altres banderes de marca, s'ofereixen directoris amb-I Els indicadors poden venir directament després de la bandera:-Idir està permès, així com-Digo . Aquesta sintaxi està permesa per a la compatibilitat amb el preprocessador de C-I bandera

El -j treballs L'opció especifica la quantitat de treballs (ordres) per executar-se simultàniament. Si hi ha més d'un-j opció, l'última és efectiva. Si el-j l'opció es dóna sense un argument, fer no limitarà el nombre de llocs de treball que es poden executar simultàniament.

El -k l'opció continua tant com sigui possible després d'un error; mentre que l'objectiu que va fallar, i els que depenen d'ell, no es pot reiniciar, les altres dependències d'aquests objectius es poden processar de la mateixa manera.

El -l i -l càrrega les opcions especifiquen que no s'han d'iniciar treballs nous (ordres) si hi ha altres treballs en execució i la mitjana de càrrega és almenyscàrrega (un número de coma flotant). Sense cap argument, elimina un límit de càrrega anterior.

El -n opció imprimeix les comandes que s'executaran, però no les executarà.

El -o dossier L'opció no remora la dossier encara que sigui més antic que les seves dependències, i no remplaça res a causa dels canvis en dossier . Essencialment, el fitxer es tracta com molt antic i s'ignoren les regles.

El -p opció imprimeix la base de dades (regles i valors de variable) que resulta de llegir els fitxers make. A continuació, s'executa com de costum o com s'especifica d'una altra manera.Això també imprimeix la informació de la versió proporcionada per la-v canviar (veure a sota). Per imprimir la base de dades sense intentar tornar a carregar cap fitxer, utilitzeufer -p -f / dev / null .

El -q L'opció estableix el mode de pregunta. No executeu cap ordre ni imprimiu res, només heu de tornar un estat de sortida que sigui zero si els objectius especificats ja estan actualitzats, no cero d'una altra manera.

El -r L'opció elimina l'ús de les regles implícites incorporades. També esborra la llista predeterminada de sufixos per regles del sufix.

El -s L'opció silencia l'operació. No imprimeix les ordres a mesura que s'executen.

El -S L'opció cancela l'efecte del-k opció. Això mai no és necessari, excepte en una recursiva on-k pot ser heretada de la marca de nivell superior a través de MAKEFLAGS o si establiu-k a MAKEFLAGS al vostre entorn.

El -t l'opció toca els fitxers (els marca actualitzats sense canviar-los) en lloc d'executar les ordres. Això s'utilitza per fingir que els comandaments s'han fet, per tal d'enganyar futures invocacions de fer.

El -v opció imprimeix la versió del programa de fer més un copyright, una llista d'autors i un avís que no hi ha cap garantia.

El -w opció imprimeix un missatge que conté el directori de treball abans i després d'un altre processament. Això pot ser útil per fer el seguiment dels errors de niu complicat de recursiu ordres.

El -W dossier opció fingida que l'objectiu dossier acaba de ser modificat. Quan s'utilitza amb la-n bandera, això us mostra el que passaria si haguéssim de modificar aquest fitxer. Sense-n, és gairebé el mateix que executar untocar comanda en el fitxer especificat abans d'executar, excepte que el temps de modificació només canvia en la imaginació de la marca.