Skip to main content

Înțelegerea comenzilor Unix și Linux: make

Semnarea Memorandumului de înțelegere privind finanțarea și implementarea proiec... (Aprilie 2025)

Semnarea Memorandumului de înțelegere privind finanțarea și implementarea proiec... (Aprilie 2025)
Anonim

Scopul utilitatii make este de a determina automat ce bucati dintr-un program mare trebuie recompilate si sa emite comenzile pentru a le recompila. Manualul descrie implementarea GNU a mărcii, scrisă de Richard Stallman și Roland McGrath. Aceste exemple afișează programe C, deoarece acestea sunt cele mai frecvente, dar puteți folosi marca cu orice limbaj de programare al cărui compilator poate fi rulat cu o comandă shell. De fapt, face nu se limitează la programe. Puteți să-l utilizați pentru a descrie orice sarcină în care unele fișiere trebuie să fie actualizate automat de la ceilalți ori de câte ori ceilalți se schimbă.

Notă: Această pagină este un extras din documentația făcută de GNU . Este actualizat doar ocazional, deoarece proiectul GNU nu folosește nroff. Pentru documentația completă, consultați fișierul info make.info care este realizat din fișierul sursă texinfo make.texinfo.

Sintaxa și pregătirea utilității

face -f Makefile opțiune … ţintă …

Pentru a vă pregăti să utilizați marcați, trebuie să scrieți un fișier numit makefile care descrie relațiile dintre fișierele din programul dvs. și afișează comenzile pentru actualizarea fiecărui fișier. De obicei, un fișier executabil este actualizat din fișierele obiect, care sunt, la rândul lor, realizate prin compilarea fișierelor sursă.

Odată ce există un makefile potrivit, de fiecare dată când schimbați unele fișiere sursă această comandă shell shell face este suficient să efectueze toate recompilările necesare. Programul de creare utilizează baza de date makefile și ultimele perioade de modificare a fișierelor pentru a decide care dintre fișiere trebuie să fie actualizate. Pentru fiecare dintre aceste fișiere, emite comenzile înregistrate în baza de date.

Utilitatea de execuție execută comenzi în makefile pentru a actualiza unul sau mai multe nume de destinații, unde Nume este de obicei un program. Daca nu-f opțiunea este prezentă, face va căuta fișierele makefilesGNUmakefile, Makefile, șiMakefile, în această ordine.

În mod normal, ar trebui să apelați fișierul makefile fie makefile, fie Makefile. (Este recomandat să utilizați Makefile deoarece apare vizibil aproape de începutul unei liste de directoare, chiar lângă alte fișiere importante, cum ar fiCITEȘTE-MĂ.) Primul nume, GNUmakefile, nu este recomandat pentru majoritatea fișierelor. Ar trebui să utilizați acest nume dacă aveți un makefile specific pentru GNU și nu va fi înțeles de alte versiuni ale mărcii. Dacă este makefile -, se citește intrarea standard.

face utilitatea actualizează o țintă dacă depinde de fișierele prealabile care au fost modificate de la ultima modificare a destinației sau dacă țintă nu există.

Opțiuni

-b și -m opțiunile sunt ignorate pentru compatibilitatea cu alte versiuni ale mărcii.

-Dir se va schimba în directorul dir înainte de a citi fișierul makefiles sau de a face altceva. Dacă sunt multiple-C sunt specificate opțiunile, fiecare este interpretată în raport cu cea anterioară:-C/ -C, etc. este echivalent cu-C / etc. Acest lucru este folosit în mod obișnuit cu invocarea recursivă a mărcii.

-d opțiunea va tipări informațiile de depanare în plus față de procesarea obișnuită. Informațiile de depanare afirmă care fișiere sunt luate în considerare pentru refacere, care sunt timpul de comparare a fișierelor și cu ce rezultate, care fișiere trebuie de fapt remodelate, care reguli implicite sunt luate în considerare și care sunt aplicate - tot ce este interesant despre modul în care decide ce să facă .

-e opțiunea dă variabilele luate din mediul precedent față de variabilele din fișierele makefiles.

-f fişier utilizează opțiunea fişier ca un makefile.

-i opțiunea ignoră toate erorile din comenzile executate pentru a remake fișierele.

-I dir opțiunea specifică un director dir pentru a căuta fișierele makefile incluse. Dacă mai multe-I opțiunile sunt utilizate pentru a specifica mai multe directoare, directoarele sunt căutate în ordinea specificată. Spre deosebire de argumentele față de alte pavilioane de make, directoarele date cu-I steagurile pot veni imediat după steag:-Idir este permisă, precum și-Dir . Această sintaxă este permisă pentru compatibilitatea cu preprocesorul C-I steag.

-J locuri de muncă opțiunea specifică numărul de lucrări (comenzi) care se execută simultan. Dacă există mai multe-j opțiune, ultima este eficientă. În cazul în care-j opțiunea este dată fără argument, face nu va limita numărul de locuri de muncă care pot rula simultan.

-k opțiunea continuă cât mai mult posibil după o eroare; în timp ce ținta care a eșuat și cele care depind de ea nu pot fi remodelate, celelalte dependențe ale acestor obiective pot fi procesate la fel.

-l și - Încărcați opțiunile specifică faptul că nu ar trebui să fie pornite noi comenzi (comenzi) în cazul în care există alte locuri de muncă care rulează, iar media de încărcare este cel puținsarcină (un număr cu virgulă mobilă). Fără argument, elimină o limită de încărcare anterioară.

-N opțiunea tipărește comenzile care ar fi executate, dar nu le execută.

o- fişier opțiunea nu remake fişier chiar dacă este mai veche decât dependențele sale, și nu remake nimic din cauza modificărilor în fişier . În esență, fișierul este tratat ca foarte vechi, iar regulile acestuia sunt ignorate.

-p opțiunea tipărește baza de date (reguli și valori variabile) care rezultă din citirea fișelor de creație. Apoi, execută ca de obicei sau după cum se specifică altfel.De asemenea, aceasta imprimă informațiile de versiune date de-v (vezi mai jos). Pentru a imprima baza de date fără a încerca să remake orice fișier, utilizațiface -p -f / dev / null .

-q opțiunea stabilește modul de întrebare. Nu rulați nicio comandă sau nu imprimați nimic, doar returnați o stare de ieșire care este zero dacă țintele specificate sunt deja actualizate, altfel decât în ​​cazul altor obiecte.

-r opțiunea elimină utilizarea regulilor implicite încorporate. De asemenea, elimină lista implicită a sufixelor pentru regulile sufixelor.

-s opțiune silențios operațiunea. Nu imprima comenzile așa cum sunt executate.

-S opțiunea anulează efectul-k opțiune. Acest lucru nu este niciodată necesar, cu excepția unei mărci recursive Unde-k poate fi moștenit de la top-level face prin MAKEFLAGS sau dacă ați setat-k în MAKEFLAGS în mediul dvs.

-t opțiunea atinge fișierele (le marchează până la data fără a le schimba cu adevărat) în loc să le execute comenzile. Acest lucru este folosit pentru a pretinde că comenzile au fost făcute, pentru a păcăli invocările viitoare de a face.

-v opțiunea tipărește versiunea programului de creare plus un drept de autor, o listă de autori și o notă că nu există nicio garanție.

-w opțiunea tipărește un mesaj care conține directorul de lucru înainte și după alte procesări. Acest lucru poate fi util pentru urmărirea erorilor de la cuiburile complicate ale mărcii recursive comenzi.

-W fişier opțiunea pretinde că obiectivul fişier tocmai a fost modificată. Când este utilizat cu-N acest lucru vă arată ce s-ar întâmpla dacă ați fi modificat acel fișier. Fără-N, este aproape la fel ca a alerga aatingere comandă pe fișierul dat înainte de efectuarea efectuării, cu excepția faptului că timpul de modificare este modificat numai în imaginația făcută.