MAKE(1)

NUME
make - ustensila GNU Make pentru a menține grupuri de programe

SINOPSIS
make [OPȚIUNE]... [ȚINTĂ]...

DESCRIERE

Ustensila make va determina în mod automat care părți ale unui program mare trebuie recompilate și va emite comenzile necesare pentru a le recompila. Manualul descrie implementarea GNU a lui make, care a fost scrisă de Richard Stallman și Roland McGrath și este în prezent întreținută de Paul Smith. Exemplele noastre prezintă programe C, deoarece acestea sunt foarte comune, dar puteți utiliza make cu orice limbaj de programare al cărui compilator poate fi rulat cu o comandă shell. De fapt, make nu este limitat la programe. Îl puteți utiliza pentru a descrie orice sarcină în care unele fișiere trebuie să fie actualizate automat din altele ori de câte ori acestea se modifică.

Pentru a vă pregăti să utilizați make, trebuie să scrieți un fișier numit makefile (fișier de rețete) care descrie relațiile dintre fișierele din programul dumneavoastră și oferă comenzi pentru actualizarea fiecărui fișier. Într-un program, în mod obișnuit, fișierul executabil este actualizat din fișierele obiect, care la rândul lor sunt realizate prin compilarea fișierelor sursă.

Odată ce există un makefile adecvat, de fiecare dată când modificați unele fișiere sursă, această simplă comandă shell:

    make

este suficientă pentru a efectua toate recompilările necesare. Programul make utilizează descrierea fișierului makefile și orele ultimei modificări a fișierelor pentru a decide care dintre fișiere trebuie actualizate. Pentru fiecare dintre aceste fișiere, el emite comenzile înregistrate în makefile.

make execută comenzile din makefile pentru a actualiza una sau mai multe ținte, unde țintă este de obicei un program. Dacă nu este prezentă opțiunea -f, make va căuta fișierele „makefile” GNUmakefile, makefile și Makefile, în această ordine.

În mod normal, ar trebui să numiți fișierul „makefile” fie makefile, fie Makefile; (se recomandă Makefile, deoarece apare în mod proeminent la începutul unei liste de directoare, chiar lângă alte fișiere importante, cum ar fi README). Primul nume verificat, GNUmakefile, nu este recomandat pentru majoritatea fișierelor „makefile”. Ar trebui să folosiți acest nume dacă aveți un „makefile” care este specific GNU Make și care nu va fi înțeles de alte versiuni de make. Dacă makefile este „-”, se citește intrarea standard.

make actualizează o țintă în cazul în care aceasta depinde de fișiere premergătoare care au fost modificate de la ultima modificare a țintei sau în cazul în care aceasta nu există.

OPȚIUNI

-b, -m
    Aceste opțiuni sunt ignorate pentru compatibilitate cu alte versiuni de make.

-B, --always-make
    Face în mod necondiționat toate țintele.

-C director, --directory=director
    Schimbă la directorul director înainte de a citi fișierele „makefiles” sau de a face orice altceva. Dacă sunt specificate mai multe opțiuni -C, fiecare dintre ele este interpretată în raport cu cea anterioară: -C / -C etc este echivalent cu -C /etc. Acest lucru este utilizat de obicei cu invocări recursive ale make.

-d  Afișează informații de depanare în plus față de procesarea normală. Informațiile de depanării spun ce fișiere sunt luate în considerare pentru refacere, ce timpi de fișier sunt comparați și cu ce rezultate, ce fișiere trebuie refăcute, ce reguli implicite sunt luate în considerare și care sunt aplicate - tot ceea ce este interesant despre modul în care make decide ce să facă.

--debug[=FANIOANE]
    Afișează informații de depanare în plus față de procesarea normală. Dacă FANIOANELE sunt omise, atunci comportamentul este același ca și în cazul în care ar fi fost specificat -d. FANIOANE poate fi oricare sau toate numele următoare, separate prin virgule sau spații. Numai primul caracter este semnificativ: restul pot fi omise: all pentru toate ieșirile de depanare (la fel ca atunci când se folosește -d), basic pentru depanare de bază, verbose pentru depanare de bază mai detaliată, default pentru afișarea operațiilor implicite de căutare a regulilor, jobs pentru detalii despre invocarea comenzilor, makefile pentru depanare în timpul refacerii fișierelor makefile, print arată toate rețetele care sunt rulate chiar dacă sunt silențioase și why arată motivul pentru care make a decis să reconstruiască fiecare țintă. Utilizați none pentru a dezactiva toate indicatoarele de depanare anterioare.

-e, --environment-overrides
    Acordă variabilelor preluate din mediu prioritate față de variabilele din fișierele makefile.

-E șir, --eval șir
    Interpretează șirul utilizând funcția eval, înainte de a analiza orice fișier makefile.

-f file, --file=fișier, --makefile=FIȘIER
    Folosește fișier ca fișier makefile.

-i, --ignore-errors
    Ignoră toate erorile din comenzile executate pentru refacerea fișierelor.

-I director, --include-dir=director
    Specifică un director director în care se caută fișierele makefile incluse. În cazul în care se utilizează mai multe opțiuni -I pentru a specifica mai multe directoare, directoarele sunt căutate în ordinea specificată. Spre deosebire de argumentele altor opțiuni de make, directoarele date cu opțiunea -I pot veni direct după opțiune: -Idirector este permis, precum și -I director. Această sintaxă este permisă pentru compatibilitate cu indicatorul -I al preprocesorului C.

-j [lucrări], --jobs[=lucrări]
    Specifică numărul de lucrări (comenzi) care trebuie executate simultan. În cazul în care există mai multe opțiuni -j, ultima este cea care are efect. Dacă opțiunea -j este dată fără un argument, make nu va limita numărul de lucrări care pot fi executate simultan.

--jobserver-style=stil
    Stilul de server de lucru care trebuie utilizat. stil poate fi unul dintre fifo, pipe sau sem (numai pentru Windows).

-k, --keep-going
    Continuă cât mai mult posibil după o eroare. În timp ce obiectivul care a eșuat și cele care depind de acesta nu pot fi refăcute, celelalte dependențe ale acestor obiective pot fi procesate în continuare.

-l [medie-încărcare], --load-average[=medie-încărcare]
    Specifică faptul că nu trebuie să se pornească noi lucrări (comenzi) dacă există alte lucrări în curs de execuție și dacă media de încărcare este de cel puțin medie-încărcare (un număr în virgulă mobilă). Fără nici un argument, elimină o limită de încărcare anterioară.

-L, --check-symlink-times
    Utilizează cel mai recent timp mtime între legăturile simbolice și țintă.

-n, --just-print, --dry-run, --recon
    Afișează comenzile care ar trebui executate, dar nu le execută (cu excepția anumitor circumstanțe).

-o fișier, --old-file=fișier, --assume-old=fișier
    Nu reface fișierul fișier chiar dacă este mai vechi decât dependențele sale și nu reface nimic din cauza modificărilor din fișier. În esență, fișierul este tratat ca fiind foarte vechi, iar regulile sale sunt ignorate.

-O[tip], --output-sync[=tip]
    Când se execută mai multe lucrări în paralel cu -j, se asigură că rezultatele fiecărei lucrări sunt colectate împreună și nu intercalate cu rezultatele altor lucrări. Dacă tip nu este specificat sau este target, ieșirea de la întreaga rețetă pentru fiecare țintă este grupată împreună. Dacă tip este line, se grupează ieșirile de la fiecare linie de comandă din cadrul unei rețete. Dacă tip este recurse, se grupează ieșirile de la o întreagă rețetă recursiv. Dacă tip este none, sincronizarea ieșirii este dezactivată.

-p, --print-data-base
    Afișează baza de date (reguli și valori ale variabilelor) care rezultă din citirea fișierelor de rețete „makefile”; apoi execută ca de obicei sau astfel cum este specificat. Aceasta afișează, de asemenea, informațiile despre versiune date de opțiunea -v (a se vedea mai jos). Pentru a afișa baza de date fără a încerca să refaceți niciun fișier, utilizați make -p -f/dev/null.

-q, --question
    Activează „modul de întrebare”. Nu execută nicio comandă și nu afișează nimic; returnează doar o stare de ieșire care este zero dacă țintele specificate sunt deja actualizate, altfel nu este zero.

-r, --no-builtin-rules
    Elimină utilizarea regulilor implicite încorporate. De asemenea, elimină lista implicită de sufixe pentru regulile de sufixare.

-R, --no-builtin-variables
    Nu definește nicio variabilă încorporată.

-s, --silent, --quiet
    Operare silențioasă; nu se afișează comenzile pe măsură ce sunt executate.

--no-silent
    Anulează efectul opțiunii -s.

-S, --no-keep-going, --stop
    Anulează efectul opțiunii -k.

-t, --touch
    Accesează fișierele (le marchează la data curentă fără a le modifica cu adevărat) în loc să execute comenzile acestora. Acest lucru este folosit pentru a pretinde că au fost executate comenzile, pentru a păcăli viitoarele invocări ale lui make.

--trace
    Sunt afișate informații despre dispoziția fiecărei ținte (de ce este reconstruită ținta și ce comenzi sunt executate pentru a o reconstrui).

-v, --version
    Imprimă versiunea programului make plus drepturile de autor, o listă a autorilor și o notificare că nu există nicio garanție.

-w, --print-directory
    Afișează un mesaj care conține directorul de lucru înainte și după alte procesări. Acest lucru poate fi util pentru depistarea erorilor din imbricări complicate de comenzi make recursive.

--no-print-directory
    Dezactivează -w, chiar dacă a fost activată implicit.

--shuffle[=MOD]
    Activează amestecarea ordinii obiectivelor și a condițiilor prealabile. MOD este unul dintre none pentru a dezactiva modul de amestecare, random pentru a amesteca condițiile prealabile în ordine aleatorie, reverse pentru a lua în considerare condițiile prealabile în ordine inversă, sau un număr întreg <seed> care activează modul random cu o anumită valoare seed. Dacă MOD este omis, valoarea implicită este random.

-W fișier, --what-if=fișier, --new-file=fișier, --assume-new=fișier
    Pretinde că obiectivul fișier tocmai a fost modificat. Atunci când este utilizată cu opțiunea -n, aceasta vă arată ce s-ar întâmpla dacă ați modifica fișierul respectiv. Fără -n, este aproape la fel ca și cum ați executa o comandă touch pe fișierul dat înainte de a executa make, cu excepția faptului că timpul de modificare este schimbat doar în imaginația lui make.

--warn-undefined-variables
    Avertizează atunci când se face referire la o variabilă nedefinită.

STARE DE IEȘIRE
GNU Make iese cu o stare de zero dacă toate fișierele de rețete au fost analizate cu succes și nu a eșuat nicio țintă construită. O stare de unu va fi returnată dacă a fost utilizată opțiunea -q și make determină că o țintă trebuie reconstruită. O stare de doi va fi returnată dacă au fost întâlnite erori.

CONSULTAȚI ȘI
Documentația completă pentru make este menținută ca un manual Texinfo. Dacă programele info și make sunt instalate corect în sistemul dvs., comanda

    info make

ar trebui să vă permită accesul la manualul complet.

ERORI
Consultați capitolul „Problems and Bugs” din Manualul GNU Make.

AUTOR
Această pagină de manual a fost realizată de Dennis Morse de la Universitatea Stanford. Actualizări suplimentare realizate de Mike Frysinger. A fost refăcută de Roland McGrath. Întreținută de Paul Smith.

DREPTURI DE AUTOR
Drepturi de autor © 1992-1993, 1996-2023 Free Software Foundation, Inc. Acest fișier face parte din GNU Make.

GNU Make este un software liber; îl puteți redistribui și/sau modifica în conformitate cu termenii Licenței Publice Generale GNU, așa cum a fost publicată de Free Software Foundation; fie versiunea 3 a licenței, fie (la alegerea dumneavoastră) orice versiune ulterioară.

GNU Make este distribuit în speranța că va fi util, dar FĂRĂ NICI O GARANȚIE; nici măcar garanția implicită de COMERCIALIZARE sau de ADECVARE LA UN SCOP PARTICULAR. Pentru mai multe detalii, consultați Licența publică generală GNU.

Ar fi trebuit să primiți o copie a Licenței Publice Generale GNU împreună cu acest program. Dacă nu, consultați pagina http://www.gnu.org/licenses/.

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.