make - ustensila GNU Make pentru a menține grupuri de
programe
make [OPȚIUNE]...
[ȚINTĂ]...
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ă.
- -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ă.
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.
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.
Consultați capitolul „Problems and Bugs” din
Manualul GNU Make.
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 © 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/.
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.