Provided by: manpages-ro_4.26.0-1_all 

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 pentru să utilizați make, trebuie să scrieți un fișier numit makefile care descrie
relațiile dintre fișierele din programul dumneavoastră, precum și comenzile 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 unul sau mai multe nume țintă, unde nume 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 a pentru toate ieșirile de depanare (la fel ca la utilizarea -d), b pentru depanare de bază, v
pentru depanare de bază mai detaliată, i pentru afișarea regulilor implicite, j pentru detalii
privind invocarea comenzilor și m pentru depanare în timpul refacerii fișierelor makefile. Utilizați
n pentru a dezactiva toate fanioanele de depanare anterioare.
-e, --environment-overrides
Acordă variabilelor preluate din mediu prioritate față de variabilele din fișierele 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 să ruleze 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. Atunci când make invocă un sub-make,
toate instanțele make se vor coordona pentru a rula simultan numărul specificat de lucrări; a se
vedea secțiunea MAKE ÎN PARALEL ȘI SERVERUL DE LUCRĂRI pentru detalii.
--jobserver-fds [R,W]
Opțiunea internă pe care make o folosește pentru a transmite numerele descriptorilor de fișiere de
citire și scriere a conductelor de la serverul de lucrări către sub-make; a se vedea secțiunea MAKE
ÎN PARALEL ȘI SERVERUL DE LUCRĂRI pentru detalii.
-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.
-S, --no-keep-going, --stop
Anulează efectul opțiunii -k. Acest lucru nu este niciodată necesar, cu excepția unui make recursiv
în care -k ar putea fi moștenit de la make de nivel superior prin MAKEFLAGS sau dacă ați definit -k
în MAKEFLAGS în mediul dumneavoastră.
-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.
-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ă ofere acces la manualul complet. În plus, manualul este disponibil și online la adresa
https://www.gnu.org/software/make/manual/html_node/index.html.
MAKE ÎN PARALEL ȘI SERVERUL DE LUCRĂRI
Utilizând opțiunea -j, utilizatorul poate instrui make să execute sarcini în paralel. Prin specificarea
unui argument numeric pentru -j, utilizatorul poate specifica o limită superioară a numărului de sarcini
paralele care urmează să fie executate.
Atunci când mediul de construcție este de așa natură încât un make de nivel superior invocă sub-make (de
exemplu, un stil în care fiecare subdirector conține propriul Makefile ), nici o instanță individuală a
make nu știe câte sarcini rulează în paralel, astfel încât menținerea numărului de sarcini sub limita
superioară ar fi imposibilă fără o comunicare între toate instanțele make care rulează. Deși sunt
fezabile soluții cum ar fi ca nivelul superior make să servească drept controlor central sau se pot crea
alte mecanisme de sincronizare, cum ar fi memoria partajată sau soclurile, implementarea actuală
utilizează o simplă conductă partajată.
Această conductă este creată de procesul make de nivel superior și transmisă tuturor proceselor sub-make.
Procesul make de nivel superior scrie N-1 jetoane de un octet în conductă (se presupune că make de nivel
superior își rezervă un jeton pentru el însuși). Ori de câte ori oricare dintre procesele make (inclusiv
make de nivel superior) trebuie să execute o nouă sarcină, citește un octet din conducta partajată. În
cazul în care nu mai există jetoane, trebuie să aștepte ca un jeton să fie scris înapoi în conductă.
Odată ce sarcina este finalizată, procesul make scrie din nou un jeton în conductă (și astfel, dacă
jetoanele au fost epuizate, deblochează primul proces make care aștepta să citească un jeton). Deoarece
numai N-1 jetoane au fost scrise în conductă, nu pot fi în curs de execuție mai mult de N sarcini la un
moment dat.
În cazul în care lucrarea care urmează să fie executată nu este un sub-make, atunci make va închide
descriptorii de fișiere de conductă de la serverul de lucrări înainte de a invoca comenzile, astfel încât
comanda să nu poată interfera cu serverul de lucrări, și comanda să nu găsească niciun descriptor de
fișiere neobișnuit.
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-2016 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 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.
GNU 28 februarie 2016 MAKE(1)