Aceasta este comanda bmake care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
bfake — menține dependențele programului
REZUMAT
bfake [-BeikNnqrstWwX] [-C director] [-D variabil] [-d steaguri] [-f makefile] [-I director]
[-J privat] [-j max_jobs] [-m director] [-T fişier] [-V variabil] [variabila=valoare]
[ţintă ...]
DESCRIERE
bfake este un program conceput pentru a simplifica întreținerea altor programe. Intrarea sa este a
lista de specificații cu privire la fișierele de care depind programele și alte fișiere. Daca nu -f
makefile este dată opțiunea makefile, bfake va încerca să deschidă"makefile' atunci 'makefile"în
pentru a găsi specificațiile. Dacă fișierul '.depinde' există, se citește (vezi mkdep(1)).
Această pagină de manual este concepută doar ca document de referință. Pentru o descriere mai detaliată
of bfake și makefiles, vă rugăm să consultați PMa face - A tutorial.
bfake va anteda conținutul FACĂ steaguri variabila de mediu la linia de comandă
argumente înainte de a le analiza.
Opțiunile sunt următoarele:
-B Încercați să fiți compatibil cu înapoi executând un singur shell per comandă și prin
executând comenzile pentru a face sursele unei linii de dependență în secvență.
-C director
Schimba in director înainte de a citi fișierele make sau de a face orice altceva. Dacă
multiplu -C sunt specificate opțiuni, fiecare este interpretată în raport cu cea anterioară:
-C / -C etc este echivalent cu -C / Etc.
-D variabil
Defini variabil să fie 1, în context global.
-d [-]steaguri
Activați depanarea și specificați ce porțiuni din bfake sunt pentru a imprima depanarea
informație. Cu excepția cazului în care steagurile sunt precedate de „-”, acestea sunt adăugate la FACĂ steaguri
variabilă de mediu și va fi procesată de orice proces copil. În mod implicit,
informațiile de depanare sunt tipărite la o eroare standard, dar aceasta poate fi modificată folosind
il F steag de depanare. Ieșirea de depanare este întotdeauna fără tampon; în plus, dacă
depanarea este activată, dar ieșirea de depanare nu este direcționată către ieșirea standard, atunci
ieșirea standard este tamponată de linie. Steaguri este una sau mai multe dintre următoarele:
A Tipăriți toate informațiile posibile de depanare; echivalent cu specificarea tuturor
steagurile de depanare.
a Tipăriți informații de depanare despre căutarea în arhivă și stocarea în cache.
C Tipăriți informații de depanare despre directorul de lucru curent.
c Tipăriți informații de depanare despre evaluarea condiționată.
d Tipăriți informații de depanare despre căutarea în director și stocarea în cache.
e Imprimați informații de depanare despre comenzile și obiectivele eșuate.
F[+]nume de fișier
Specificați unde este scrisă ieșirea de depanare. Acesta trebuie să fie ultimul steag,
deoarece consumă restul argumentului. Dacă personajul
imediat după ce indicatorul „F” este „+”, atunci fișierul va fi deschis în
modul anexare; în caz contrar, fișierul va fi suprascris. Dacă numele fișierului este
„stdout” sau „stderr”, apoi ieșirea de depanare va fi scrisă la standard
descrierea fișierelor de ieșire a erorilor standard, respectiv (și „+”
opțiunea nu are efect). În caz contrar, rezultatul va fi scris în named
fişier. Dacă numele fișierului se termină cu „.%d”, atunci „%d” este înlocuit cu pid.
f Tipăriți informații de depanare despre evaluarea buclei.
g1 Imprimați graficul de intrare înainte de a face orice.
g2 Tipăriți graficul de intrare după ce ați făcut totul sau înainte de a ieși din eroare.
g3 Imprimați graficul de intrare înainte de a ieși în caz de eroare.
j Imprimați informații de depanare despre rularea mai multor shell-uri.
l Imprimați comenzile în Makefiles, indiferent dacă sunt sau nu prefixate
prin „@” sau alte steaguri „liniștite”. Cunoscut și sub denumirea de comportament „tagoros”.
M Tipăriți informații de depanare despre deciziile în modul „meta” despre ținte.
m Imprimați informații de depanare despre crearea țintelor, inclusiv modificarea
datele.
n Nu ștergeți scripturile de comandă temporare create atunci când rulați comenzi.
Aceste scripturi temporare sunt create în directorul la care face referire
variabilă de mediu TMPDIR sau în / tmp dacă TMPDIR este dezactivat sau setat la
Șir gol. Scripturile temporare sunt create de mkstemp(3), și au
denumirile formei faceXXXXXX. NOTĂ: Acest lucru poate crea multe fișiere în TMPDIR sau
/ tmp, deci folosiți cu grijă.
p Imprimați informații de depanare despre parsarea makefile.
s Tipăriți informații de depanare despre regulile de transformare a sufixelor.
t Tipăriți informații de depanare despre întreținerea listei țintă.
V Forțează -V opțiunea de a imprima valorile brute ale variabilelor.
v Tipăriți informații de depanare despre atribuirea variabilelor.
x Rulați comenzile shell cu -x deci comenzile reale sunt tipărite așa cum sunt
executat.
-e Specificați că variabilele de mediu înlocuiesc atribuirile macro în cadrul fișierelor make.
-f makefile
Specificați un makefile de citit în locul celui implicit 'makefile'. Dacă makefile este '-"
intrarea standard este citită. Mai multe makefiles pot fi specificate și sunt citite în
comanda specificata.
-I director
Specificați un director în care să căutați fișierele make și fișierele make incluse. The
directorul sistem makefile (sau directoare, consultați -m opțiunea) este automat
incluse ca parte a acestei liste.
-i Ignorați ieșirea diferită de zero a comenzilor shell din makefile. Echivalent cu precizarea
"-' înainte de fiecare linie de comandă din makefile.
-J privat
Această opțiune ar trebui nu fi specificat de utilizator.
Cand j opțiunea este utilizată într-o construcție recursivă, această opțiune este transmisă de un make la
copilul face să permită tuturor proceselor de realizare din construcție să coopereze pentru a evita
supraîncărcarea sistemului.
-j max_jobs
Specificați numărul maxim de locuri de muncă care bfake poate rula la un moment dat. The
valoarea este salvată în .FACE.LUCRĂRI. Dezactivează modul de compatibilitate, cu excepția cazului în care B steag este
specificat de asemenea. Când modul de compatibilitate este dezactivat, toate comenzile asociate cu a
target sunt executate într-o singură invocare shell spre deosebire de cea tradițională
invocarea shell pe linie. Acest lucru poate rupe scripturile tradiționale care se schimbă
directoare la fiecare invocare de comandă și apoi așteptați-vă să începeți cu un nou
mediu pe linia următoare. Mai degrabă este mai eficient să corectezi scripturile
decât să pornească compatibilitatea inversă.
-k Continuați procesarea după ce se întâlnesc erori, dar numai pe acele ținte care o fac
nu depinde de ținta a cărei creare a cauzat eroarea.
-m director
Specificați un director în care să căutați sys.mk și makefiles incluse prin intermediul
⟨fişier⟩-stil include declarație. The -m opțiunea poate fi folosită de mai multe ori pentru a forma a
cale de căutare. Această cale va suprascrie calea implicită de includere a sistemului:
/usr/share/mk. În plus, calea include sistemul va fi atașată la căutare
cale folosită pentru "fişier„-style include declarații (vezi -I opțiune).
Dacă un nume de fișier sau director în -m argument (sau mediul MAKESYSPATH
variabilă) începe cu șirul „.../” apoi bfake va căuta cele specificate
fișier sau director numit în partea rămasă a șirului de argumente. Cautarea
începe cu directorul curent al Makefile și apoi lucrează în sus spre
rădăcină a sistemului de fișiere. Dacă căutarea are succes, atunci directorul rezultat
înlocuiește specificația „.../” din -m argument. Dacă este utilizată, această caracteristică permite
bfake pentru a căuta cu ușurință în arborele sursă curent fișiere sys.mk personalizate (de exemplu,
prin folosirea „.../mk/sys.mk” ca argument).
-n Afișați comenzile care ar fi fost executate, dar nu le executați efectiv
cu excepția cazului în care ținta depinde de sursa specială .MAKE (vezi mai jos).
-N Afișați comenzile care ar fi fost executate, dar nu executați nici una
dintre ei; util pentru depanarea makefile-urilor de nivel superior fără a coborî în
subdirectoare.
-q Nu executați nicio comandă, dar ieșiți din 0 dacă țintele specificate sunt actualizate și
1, altfel.
-r Nu utilizați regulile încorporate specificate în fișierul make-ul de sistem.
-s Nu repetați nicio comandă pe măsură ce sunt executate. Echivalent cu specificarea „@' inainte de
fiecare linie de comandă din makefile.
-T fișier de urmărire
Când este utilizat cu -j flag, adăugați o înregistrare de urmărire la fișier de urmărire pentru fiecare lucrare începută
si completat.
-t În loc să reconstruiți o țintă așa cum este specificat în fișierul make, creați-o sau actualizați
timpul de modificare a acestuia pentru a-l face să pară actualizat.
-V variabil
bfakeideea lui despre valoarea variabil, în context global. Nu construi
orice ținte. Pot fi specificate mai multe instanțe ale acestei opțiuni; variabilele vor
să fie tipărită câte una pe linie, cu o linie goală pentru fiecare variabilă nulă sau nedefinită. Dacă
variabil conține un „$”, apoi valoarea va fi extinsă înainte de imprimare.
-W Tratați orice avertismente în timpul parsării makefile ca erori.
-w Imprimați mesajele de intrare și ieșire din director, pre și post procesare.
-X Nu exportați individual variabilele transmise pe linia de comandă în mediu.
Variabilele transmise pe linia de comandă sunt încă exportate prin intermediul FACĂ steaguri
variabilă de mediu. Această opțiune poate fi utilă pe sistemele care au o limită mică
pe dimensiunea argumentelor comenzii.
variabila=valoare
Setați valoarea variabilei variabil la valoare. În mod normal, toate valorile au trecut pe
linia de comandă sunt, de asemenea, exportate către sub-produse din mediu. The -X pavilion
dezactivează acest comportament. Atribuțiile de variabile ar trebui să urmeze opțiunile pentru POSIX
compatibilitate, dar nu se impune nicio comandă.
Există șapte tipuri diferite de linii într-un makefile: specificații de dependență de fișiere,
comenzi shell, atribuiri de variabile, instrucțiuni includ, directive condiționale, bucle for,
și comentarii.
În general, liniile pot fi continuate de la o linie la alta prin încheierea lor cu o bară oblică inversă
('\'). Caracterul de linie nouă și spațiul alb inițial de pe următoarea linie sunt
comprimat într-un singur spațiu.
FILE DEPENDENŢĂ SPECIFICAȚII
Liniile de dependență constau din una sau mai multe ținte, un operator și zero sau mai multe surse.
Acest lucru creează o relație în care țintele „depind” de surse și sunt de obicei
creat din ele. Relația exactă dintre țintă și sursă este determinată
de către operatorul care le separă. Cei trei operatori sunt după cum urmează:
: O țintă este considerată depășită dacă timpul său de modificare este mai mic decât cel al oricărei
a surselor sale. Sursele pentru o țintă se acumulează peste linii de dependență atunci când aceasta
este utilizat operator. Ținta este eliminată dacă bfake este întreruptă.
! Țintele sunt întotdeauna recreate, dar nu până când toate sursele au fost examinate și re-create.
creat după cum este necesar. Sursele pentru o țintă se acumulează peste linii de dependență atunci când aceasta
este utilizat operator. Ținta este eliminată dacă bfake este întreruptă.
:: Dacă nu sunt specificate surse, ținta este întotdeauna re-creată. În caz contrar, o țintă este
considerată depășită dacă oricare dintre sursele sale a fost modificată mai recent decât
ţintă. Sursele pentru o țintă nu se acumulează peste liniile de dependență atunci când aceasta
este utilizat operator. Ținta nu va fi eliminată dacă bfake este întreruptă.
Țintele și sursele pot conține valorile wildcard shell „?”, „*”, „[]” și „{}”. The
valorile „?”, „*” și „[]” pot fi utilizate numai ca parte a componentei finale a țintei sau
sursă și trebuie utilizat pentru a descrie fișierele existente. Valoarea „{}” nu trebuie să fie neapărat
folosit pentru a descrie fișierele existente. Extinderea este în ordinea directorului, nu în ordine alfabetică
făcut în coajă.
COAJĂ COMANDE
Fiecare țintă poate avea asociate cu ea una sau mai multe linii de comenzi shell, utilizate în mod normal
pentru a crea ținta. Fiecare dintre rândurile din acest script trebuie sa fi precedat de o filă. (Pentru
motive istorice, spațiile nu sunt acceptate.) În timp ce țintele pot apărea în multe dependențe
linii dacă se dorește, în mod implicit doar una dintre aceste reguli poate fi urmată de un script de creare.
Dacă „::' este utilizat, cu toate acestea, toate regulile pot include scripturi, iar scripturile sunt
executat în ordinea găsită.
Fiecare linie este tratată ca o comandă shell separată, cu excepția cazului în care la sfârșitul liniei este escape cu a
backslash ('\'), caz în care acea linie și următoarea sunt combinate. Dacă primele personaje
ale comenzii sunt orice combinație de „@","+"sau"-', comanda este tratată special. A
"@' face ca comanda să nu fie ecou înainte de a fi executată. A '+' determină comanda să
fi executat chiar şi atunci când -n este dată. Acest lucru este similar cu efectul .MAKE special
sursă, cu excepția faptului că efectul poate fi limitat la o singură linie a unui script. A '-"în
modul de compatibilitate face ca orice stare de ieșire diferită de zero a liniei de comandă să fie ignorată.
Cand bfake este rulat în modul job cu -j max_jobs, întregul script pentru țintă este alimentat
o singură instanță a shell-ului. În modul de compatibilitate (non-jobs), fiecare comandă este rulată într-un
proces separat. Dacă comanda conține meta caractere shell
('#=|^(){};&<>*?[]:$`\\n') va fi transmis în shell; in caz contrar bfake va încerca
executare directă. Dacă o linie începe cu „-' și shell-ul are ErrCtl activat, apoi eșec
din linia de comandă va fi ignorată ca în modul de compatibilitate. In caz contrar '-' afectează
întregul loc de muncă; scriptul se va opri la prima linie de comandă care eșuează, dar ținta se va opri
să nu fie considerat a fi eșuat.
Makefiles ar trebui să fie scrise astfel încât modul de bfake funcţionarea nu le modifică
comportament. De exemplu, orice comandă care trebuie să folosească „cd” sau „chdir” fără potențial
schimbarea directorului pentru comenzile ulterioare ar trebui pusă în paranteze pentru a se executa
într-un subshell. Pentru a forța folosirea unei cochilii, scăpați de întreruperile de linie, astfel încât să faceți
întregul script o comandă. De exemplu:
evitarea-chdir-efectele-secunde:
@echo Construirea $@ în `pwd`
@(cd ${.CURDIR} && ${MAKE} $@)
@echo Înapoi în `pwd`
asigurați-o-cochilie-indiferent-de-mod:
@echo Construirea $@ în `pwd`; \
(cd ${.CURDIR} && ${MAKE} $@); \
echo Înapoi în `pwd`
Întrucât bfake voi chdir(2) la '.OBJDIR' înainte de a executa orice ținte, fiecare proces copil
începe cu acesta ca director de lucru curent.
VARIABIL CESII
Variabilele din make seamănă mult cu variabilele din shell și, prin tradiție, constau din toate
litere mari.
Variabil cesiune modificatori
Cei cinci operatori care pot fi utilizați pentru a atribui valori variabilelor sunt următorii:
= Atribuiți valoarea variabilei. Orice valoare anterioară este suprascrisă.
+= Adăugați valoarea la valoarea curentă a variabilei.
?= Atribuiți valoarea variabilei dacă nu este deja definită.
:= Atribuire cu extindere, adică extindeți valoarea înainte de a o atribui variabilei.
În mod normal, extinderea nu se face până când variabila nu este referită. NOTĂ: Referințe
la variabile nedefinite sunt nu extins. Acest lucru poate cauza probleme atunci când este variabil
se folosesc modificatori.
!= Extindeți valoarea și transmiteți-o shell-ului pentru execuție și atribuiți rezultatul
variabil. Orice linii noi din rezultat sunt înlocuite cu spații.
Orice spațiu alb înainte de cel alocat valoare este eliminat; dacă valoarea este adăugată, a
se introduce un singur spațiu între conținutul anterior al variabilei și cel anexat
valoare.
Variabilele sunt extinse prin înconjurarea numelui variabilei fie cu acolade („{}”), fie
paranteze ('()') și precedându-l cu un semn dolar ('$'). Dacă numele variabilei conține
doar o singură literă, acoladele sau parantezele din jur nu sunt necesare. Aceasta mai scurtă
forma nu este recomandată.
Dacă numele variabilei conține un dolar, atunci numele în sine este extins mai întâi. Asta permite
nume de variabile aproape arbitrare, totuși nume care conțin dolar, acolade, paranteze sau
spațiile albe sunt într-adevăr cel mai bine evitate!
Dacă rezultatul extinderii unei variabile conține semnul dolar („$”), șirul este extins
din nou.
Substituția variabilei are loc la trei momente distincte, în funcție de locul unde se află variabila
folosit.
1. Variabilele din liniile de dependență sunt extinse pe măsură ce linia este citită.
2. Variabilele din comenzile shell sunt extinse atunci când comanda shell este executată.
3. Variabilele indexului buclei „.for” sunt extinse la fiecare iterație a buclei. Rețineți că celălalt
variabilele nu sunt extinse în bucle, deci următorul cod exemplu:
.pentru i în 1 2 3
a+= ${i}
j= ${i}
b+= ${j}
.endfor
toate:
@echo ${a}
@echo ${b}
va imprima:
1 2 3
3 3 3
Deoarece în timp ce ${a} conține „1 2 3” după ce bucla este executată, ${b} conține „${j}
${j} ${j}” care se extinde la „3 3 3” deoarece după terminarea buclei ${j} conține „3”.
Variabil clase
Cele patru clase diferite de variabile (în ordinea creșterii priorității) sunt:
Variabile de mediu
Variabile definite ca parte a bfakemediul lui.
Variabile globale
Variabilele definite în fișierul make sau în fișierele make incluse.
Variabile de linie de comandă
Variabile definite ca parte a liniei de comandă.
Variabile locale
Variabile care sunt definite specifice unei anumite ținte.
Variabilele locale sunt toate încorporate, iar valorile lor variază magic de la țintă la țintă. Aceasta
nu este în prezent posibilă definirea de noi variabile locale. Cele șapte variabile locale sunt ca
urmează:
.ALLSRC Lista tuturor surselor pentru această țintă; de asemenea cunoscut ca si '>".
.ARHIVA Numele fișierului de arhivă; de asemenea cunoscut ca si '!".
.IMPSRC În regulile de transformare a sufixelor, numele/calea sursei de la care
ținta urmează să fie transformată (sursa „implicite”); de asemenea cunoscut ca si '<'. Aceasta
nu este definită în reguli explicite.
.MEMBRU Numele membrului arhivei; de asemenea cunoscut ca si '%".
.OODATE Lista surselor pentru această țintă care au fost considerate învechite; de asemenea stiut
la fel de '?".
.PREFIX Prefixul de fișier al țintei, care conține doar porțiunea de fișier, fără sufix
sau componentele directorului precedente; de asemenea cunoscut ca si '*'. Sufixul trebuie să fie
unul dintre sufixele cunoscute declarate cu .SUFIXE sau nu va fi
recunoscut.
.ŢINTĂ Numele țintei; de asemenea cunoscut ca si '@".
Formele mai scurte ('>","!","<","%","?","*', și '@') sunt permise pentru înapoi
compatibilitatea cu makefile-urile istorice și moștenirea POSIX și nu sunt recomandate.
Variante ale acestor variabile cu punctuația urmată imediat de „D” sau „F”, de ex
"$(@D)', sunt forme moștenite echivalente cu utilizarea modificatorilor ':H' și ':T'. Aceste forme sunt
acceptate pentru compatibilitate cu fișierele makefile AT&T System V UNIX și POSIX, dar nu sunt
recomandată.
Patru dintre variabilele locale pot fi utilizate în surse pe linii de dependență deoarece se extind
la valoarea corespunzătoare pentru fiecare țintă de pe linie. Aceste variabile sunt ".ŢINTĂ",".PREFIX"
".ARHIVA', și '.MEMBRU".
Suplimentar construit-in variabile
În plus, bfake setează sau știe despre următoarele variabile:
$ Un singur semn dolar „$”, adică „$$” se extinde la un singur semn dolar.
.TOATE ȚINTELE Lista tuturor țintelor întâlnite în Makefile. Dacă se evaluează în timpul
Analiza Makefile, listează numai acele ținte întâlnite până acum.
.CURDIR O cale către directorul în care bfake a fost executat. Consultați descrierea
din „PWD” pentru mai multe detalii.
.INCLUSEDFROMDIR
Directorul fișierului din care a fost inclus acest Makefile.
.INCLUSEDFROMFILE
Numele fișierului din care a fost inclus acest Makefile.
FACE Numele care bfake a fost executat cu (argv[0]). Pentru compatibilitate bfake
de asemenea seturi .FACE cu aceeași valoare. Variabila preferată de utilizat este
variabila de mediu MAKE deoarece este mai compatibilă cu alte versiuni
of bfake și nu poate fi confundat cu ținta specială cu același nume.
.FACE.DEPENDFILE
Denumește fișierul make (implicit '.depinde') din care sunt generate dependențele
citire.
.MAKE.EXPAND_VARIABLES
Un boolean care controlează comportamentul implicit al -V opțiune.
.FACE.EXPORTAT Lista variabilelor exportate de bfake.
.FACE.LUCRĂRI Argumentul către -j opțiune.
.FACE.PREFIX.LUCRĂRII
If bfake este rulat cu j apoi ieșirea pentru fiecare țintă este prefixată cu un simbol
„--- target ---” a cărui prima parte poate fi controlată prin
.FACE.PREFIX.LUCRĂRII. Dacă .FACE.PREFIX.LUCRĂRII este gol, nu este tipărit niciun simbol.
De exemplu: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] ar
produceți jetoane precum „---make[1234] target ---” ceea ce face mai ușoară urmărirea
se atinge gradul de paralelism.
MAKEFLAGS Variabila de mediu „MAKEFLAGS” poate conține orice ar putea fi
specificat la bfakelinia de comandă a lui. Orice specificat pe bfakecomanda lui
linia este atașată la variabila „MAKEFLAGS”, care este apoi introdusă în
mediu pentru toate programele care bfake execută.
.FACE.LEVEL Adâncimea recursiunii de bfake. Instanța inițială a bfake va fi 0 și
o valoare incrementată este pusă în mediu pentru a fi văzută de următorul
generaţie. Acest lucru permite teste precum: .if ${.MAKE.LEVEL} == 0 pentru a proteja
lucruri care ar trebui evaluate doar în instanța inițială a bfake.
.MAKE.MAKEFILE_PREFERENCE
Lista ordonată a numelor makefile (implicit 'makefile","makefile') acea
bfake Va căuta.
.FACEȚI.FIȘIERE
Lista makefile-urilor citite de bfake, care este util pentru urmărire
dependențe. Fiecare makefile este înregistrat o singură dată, indiferent de număr
de ori citite.
.MAKE.MODE Procesat după citirea tuturor makefiles. Poate afecta modul care bfake ruleaza
in. Poate conține un număr de cuvinte cheie:
compa Aprecieri -B, pune bfake în modul „compat”.
meta puts bfake în modul „meta”, pentru care sunt create meta fișierele
fiecare țintă pentru a captura comanda executată, rezultatul generat și
if Filemon(4) este disponibil, apelurile de sistem care sunt de
interes pentru bfake. Ieșirea capturată poate fi foarte utilă când
diagnosticarea erorilor.
curdirOk= bf În mod normal bfake nu va crea fișiere .meta în „.CURDIR'. Acest
poate fi anulat prin setare bf la o valoare care reprezintă
Adevărat.
env Pentru depanare, poate fi util să includeți mediul în
fișierul .meta.
prolix Dacă vă aflați în modul „meta”, imprimați un indiciu despre ținta construită.
Acest lucru este util dacă construcția rulează în mod silențios. The
mesajul a tipărit valoarea: .FACE.META.PREFIX.
ignora-cmd Unele fișiere make au comenzi care pur și simplu nu sunt stabile. Acest
cuvântul cheie face ca acestea să fie ignorate pentru a determina dacă a
ținta este învechită în modul „meta”. Vezi si .NOMETA_CMP.
tăcut= bf If bf este adevărat, când este creat un fișier .meta, marcați ținta
.TĂCUT.
.MAKE.META.BAILIWICK
În modul „meta”, oferă o listă de prefixe care se potrivesc cu directoarele
controlat de bfake. Dacă un fișier care a fost generat în afara .OBJDIR dar
lipsește în cadrul respectivului județ, ținta actuală este considerată în afara
data.
.FACE.META.CREATE
În modul „meta”, această variabilă conține o listă cu toate fișierele meta actualizate.
Dacă nu este gol, poate fi folosit pentru a declanșa procesarea .FĂ.FIȘIERE.META.
.FĂ.FIȘIERE.META
În modul „meta”, această variabilă conține o listă cu toate fișierele meta utilizate
(actualizat sau nu). Această listă poate fi folosită pentru a procesa meta fișierele către
extrage informații despre dependență.
.MAKE.META.IGNORE_PATHS
Oferă o listă de prefixe de cale care ar trebui ignorate; pentru că
conținutul este de așteptat să se schimbe în timp. Lista implicită include: '/ dev
/ Etc / proc / tmp / var / run / var / tmp"
.FACE.META.PREFIX
Definește mesajul tipărit pentru fiecare meta fișier actualizat în „meta verbose”
modul. Valoarea implicită este:
Construire ${.TARGET:H:tA}/${.TARGET:T}
.MAKEOVERRIDES Această variabilă este utilizată pentru a înregistra numele variabilelor cărora le sunt atribuite pe
linie de comandă, astfel încât să poată fi exportate ca parte a „MAKEFLAGS”. Acest
comportamentul poate fi dezactivat prin atribuirea unei valori goale lui „.MAKEOVERRIDES"
într-un makefile. Variabilele suplimentare pot fi exportate dintr-un makefile prin
adăugându-și numele la „.MAKEOVERRIDES'. „MAKEFLAGS” este reexportat
oricând '.MAKEOVERRIDES' este modificat.
.MAKE.PATH_FILEMON
If bfake a fost construit cu Filemon(4) suport, acesta este setat la calea
nodul dispozitivului. Acest lucru permite makefile-urilor să testeze acest suport.
.FACE.PID Proces-id-ul de bfake.
.FACE.PPID Procesul-id-ul părinte al bfake.
.FACEȚI.SAVE_DOLARI
valoarea ar trebui să fie un boolen care controlează dacă „$$” sunt păstrate atunci când se efectuează
sarcinile ':='. Valoarea implicită este false, pentru compatibilitate inversă. A stabilit
la adevărat pentru compatibilitate cu alte mărci. Dacă este setat la false, „$$” devine
„$” conform regulilor normale de evaluare.
MAKE_PRINT_VAR_ON_ERROR
Cand bfake se oprește din cauza unei erori, își tipărește numele și valoarea lui
".CURDIR' precum și valoarea oricăror variabile numite în
"MAKE_PRINT_VAR_ON_ERROR".
.linie nouă Această variabilă i se atribuie pur și simplu un caracter de nouă linie ca valoare. Acest
permite extinderi folosind :@ modificator pentru a pune o linie nouă între iterații
a buclei mai degrabă decât a unui spațiu. De exemplu, imprimarea de
"MAKE_PRINT_VAR_ON_ERROR' ar putea fi făcut ca
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.
.OBJDIR O cale către directorul în care sunt construite ținte. Valoarea lui este
determinată încercând să chdir(2) la următoarele directoare în ordine și
folosind primul meci:
1. ${MAKEOBJDIRPREFIX}${.CURDIR}
(Numai dacă „MAKEOBJDIRPREFIX” este setat în mediu sau în comandă
linia.)
2. ${MAKEOBJDIR}
(Numai dacă „MAKEOBJDIR” este setat în mediu sau în comandă
linia.)
3. ${.CURDIR}/obj.${MACHINE}
4. ${.CURDIR}/obj
5. /usr/obj/${.CURDIR}
6. ${.CURDIR}
Expansiunea variabilă este efectuată pe valoarea înainte de a fi utilizată, deci
expresii precum
${.CURDIR:S,^/ usr / src,/var/obj,}
Poate fi folosit. Acest lucru este util în special cu „MAKEOBJDIR”.
".OBJDIR' poate fi modificat în fișierul make prin ținta specială '.OBJDIR".
În toate cazurile, bfake voi chdir(2) la directorul specificat, dacă acesta există,
si seteaza '.OBJDIR' și 'PWD' în acel director înainte de a executa orice țintă.
.PARSEDIR O cale către directorul curentului „makefile' fiind analizat.
.PARSEFILE Numele de bază al curentului „makefile' fiind analizat. Această variabilă și
".PARSEDIR' sunt ambele setate numai în timp ce 'Makefiles' sunt analizate. Dacă
doriți să păstrați valorile lor curente, atribuiți-le unei variabile folosind
atribuire cu extindere: (':=').
.CALE O variabilă care reprezintă lista de directoare care bfake va căuta
pentru dosare. Lista de căutare ar trebui actualizată folosind ținta „.CALE"
mai degrabă decât variabila.
PWD Cale alternativă către directorul curent. bfake se stabilește în mod normal '.CURDIR' la
calea canonică dată de getcwd(3). Cu toate acestea, dacă variabila de mediu
„PWD” este setat și oferă o cale către directorul curent, apoi bfake seturi
".CURDIR' la valoarea lui 'PWD'. Acest comportament este dezactivat dacă
„MAKEOBJDIRPREFIX” este setat sau „MAKEOBJDIR” conține o transformare variabilă.
„PWD” este setat la valoarea „.OBJDIR' pentru toate programele care bfake
execută.
.TARGETS Lista țintelor specificate în mod explicit pe linia de comandă, dacă există.
VPATH liste separate de puncte („:”) de directoare care bfake va căuta fișiere.
Variabila este acceptată doar pentru compatibilitate cu programele vechi, utilizați
".CALE' in schimb.
Variabil modificatori
Extinderea variabilei poate fi modificată pentru a selecta sau modifica fiecare cuvânt al variabilei (unde a
„cuvânt” este o secvență de caractere delimitată de spații albe). Formatul general al unei variabile
extinderea este după cum urmează:
${variabilă[:modifier[:...]]}
Fiecare modificator începe cu două puncte, care poate fi eliminată cu o bară oblică inversă („\”).
Un set de modificatori poate fi specificat printr-o variabilă, după cum urmează:
modificator_variable=modificator[:...]
${variable:${modifier_variable}[:...]}
În acest caz, primul modificator din variabila_modificator nu începe cu două puncte, deoarece
care trebuie să apară în variabila de referință. Dacă vreunul dintre modificatorii din
modificator_variable conțin semnul dolar („$”), acestea trebuie dublate pentru a le evita mai devreme
expansiune.
Modificatorii acceptați sunt:
:E Înlocuiește fiecare cuvânt din variabilă cu sufixul său.
:H Înlocuiește fiecare cuvânt din variabilă cu tot, în afară de ultima componentă.
:Mmodel
Selectați numai acele cuvinte care se potrivesc model. Caracterele wildcard standard ale shell-ului
('*', '?' şi '[]') pot fi utilizate. Caracterele wildcard pot fi evadate cu a
bară oblică inversă („\”). Ca o consecință a modului în care valorile sunt împărțite în cuvinte, potriviți și
apoi unite, un construct ca
${VAR:M*}
va normaliza spațierea dintre cuvinte, eliminând tot spațiul de început și de final și
conversia mai multor spații consecutive în spații unice.
:Nmodel
Acesta este identic cu ":M', dar selectează toate cuvintele care nu se potrivesc model.
:O Ordonați fiecare cuvânt în variabilă alfabetic. Pentru a sorta cuvintele în ordine inversă, utilizați
":O:[-1..1]' combinație de modificatori.
:Bou Randomizați cuvinte în variabilă. Rezultatele vor fi diferite de fiecare dată când vă referiți
la variabila modificată; utilizați atribuirea cu extindere (':=') pentru a preveni astfel
comportament. De exemplu,
LIST= uno due tre quattro
RANDOM_LIST= ${LIST:Ox}
STATIC_RANDOM_LIST:= ${LIST:Ox}
toate:
@echo „${RANDOM_LIST}”
@echo „${RANDOM_LIST}”
@echo „${STATIC_RANDOM_LIST}”
@echo „${STATIC_RANDOM_LIST}”
poate produce rezultate similare cu:
quattro due tre uno
tre due quattro uno
due uno quattro tre
due uno quattro tre
:Q Cotează fiecare meta-caracter shell din variabilă, astfel încât să poată fi transmis în siguranță
prin invocări recursive ale bfake.
:R Înlocuiește fiecare cuvânt din variabilă cu totul, cu excepția sufixului său.
:gmtime
Valoarea este un șir de format pentru strftime(3), folosind curentul gmtime(3).
:hash
Calculați un hash de 32 de biți a valorii și codificați-l ca cifre hexadecimale.
:ora locala
Valoarea este un șir de format pentru strftime(3), folosind curentul ora locala(3).
:tA Încercați să convertiți variabila într-o cale absolută folosind cale reală(3), dacă aceasta nu reușește,
valoarea este neschimbată.
:tl Convertește variabilele în litere mici.
:tsc
Cuvintele din variabilă sunt în mod normal separate printr-un spațiu la extindere. Acest modificator
setează separatorul la caracter c. Dacă c este omis, atunci nu este folosit niciun separator.
Evadările comune (inclusiv codurile numerice octale) funcționează conform așteptărilor.
:tu Convertește variabilele în litere mari.
:tW Determină ca valoarea să fie tratată ca un singur cuvânt (posibil care conține alb încorporat
spaţiu). Vezi si ':[*]".
:tw Determină ca valoarea să fie tratată ca o secvență de cuvinte delimitată de spațiu alb. Vedea
de asemenea ':[@]".
:S/șir_vechi/șir_nou/[1gW]
Modificați prima apariție a șir_vechi în valoarea variabilei, înlocuindu-l cu
șir_nou. Dacă un „g” este adăugat la ultima bară oblică a modelului, toate aparițiile în
fiecare cuvânt este înlocuit. Dacă un „1” este adăugat la ultima bară oblică a modelului, numai
primul cuvânt este afectat. Dacă un „W” este adăugat la ultima bară oblică a modelului,
atunci valoarea este tratată ca un singur cuvânt (care conține posibil spațiu alb încorporat).
If șir_vechi începe cu un accent ('^'), șir_vechi este ancorat la începutul de
fiecare cuvânt. Dacă șir_vechi se termină cu un semn dolar ('$'), este ancorat la sfârșitul lui
fiecare cuvânt. Interior șir_nou, un ampersand ('&') este înlocuit cu șir_vechi (fără
orice „^” sau „$”). Orice caracter poate fi folosit ca delimitator pentru părțile
șir modificator. Caracterele de ancorare, ampersand și delimitare pot fi scăpate cu
o bară oblică inversă („\”).
Expansiunea variabilă are loc în mod normal în ambele șir_vechi si șir_nou
cu singura excepție că o bară oblică inversă este utilizată pentru a preveni expansiunea unui dolar
semnul ('$'), nu un semn de dolar precedent, așa cum este de obicei.
:C/model/înlocuire/[1gW]
:C modificatorul este la fel ca :S modificator, cu excepția faptului că șirurile vechi și noi,
în loc să fie șiruri simple, sunt o expresie regulată extinsă (vezi regex(3))
şir model si un ed(1) șir în stil înlocuire. În mod normal, prima apariție
a tiparului model în fiecare cuvânt al valorii se substituie cu înlocuire.
Modificatorul „1” face ca substituția să se aplice la cel mult un cuvânt; modificatorul „g”.
face ca substituția să se aplice la cât mai multe instanțe ale modelului de căutare model as
apar în cuvântul sau cuvintele în care se găsește; modificatorul „W” face ca valoarea să fie
tratat ca un singur cuvânt (conținând posibil spațiu alb încorporat). Rețineți că „1” și
„g” sunt ortogonale; primul specifică dacă mai multe cuvinte sunt potențial
afectat, acesta din urmă dacă pot avea loc substituții multiple în cadrul fiecăruia
cuvânt afectat.
În ceea ce privește :S modificator, cel model si înlocuire sunt supuse expansiunii variabile
înainte de a fi analizate ca expresii regulate.
:T Înlocuiește fiecare cuvânt din variabilă cu ultima sa componentă.
:u Eliminați cuvintele duplicate adiacente (cum ar fi unic(1)).
:?șir_adevărat:șir_fals
Dacă numele variabilei (nu valoarea acesteia), atunci când este analizată ca expresie condiționată .if,
evaluează la adevărat, returnează ca valoare a șir_adevărat, în caz contrar returnați
șir_fals. Deoarece numele variabilei este folosit ca expresie, :? trebuie să fie primul
modificator după numele variabilei în sine - care, desigur, va conține de obicei
expansiuni variabile. O eroare comună este încercarea de a folosi expresii precum
${NUMBERS:M42:?match:no}
care testează de fapt definite (NUMERE), pentru a determina dacă orice cuvinte se potrivesc cu „42” de care aveți nevoie
foloseste ceva de genul:
${"${NUMBERS:M42}" != "":?match:no}.
:old_string=new_string
Aceasta este înlocuirea variabilă în stil AT&T System V UNIX. Trebuie să fie ultimul
modificator specificat. Dacă șir_vechi or șir_nou nu conțin potrivirea modelului
caracter % atunci se presupune că sunt ancorate la sfârșitul fiecărui cuvânt, deci numai
sufixele sau cuvintele întregi pot fi înlocuite. In caz contrar % este subşirul lui șir_vechi
pentru a fi înlocuit în șir_nou.
Expansiunea variabilă are loc în mod normal în ambele șir_vechi si șir_nou
cu singura excepție că o bară oblică inversă este utilizată pentru a preveni expansiunea unui dolar
semnul ('$'), nu un semn de dolar precedent, așa cum este de obicei.
:@temp@şir@
Acesta este mecanismul de extindere a buclei de la marca OSF Development Environment (ODE).
Spre deosebire de .pentru extinderea buclelor are loc în momentul referinței. Atribui temp la fiecare cuvânt
în variabilă și evaluați şir. Convenția ODE este aceea temp ar trebui să înceapă și
se încheie cu un punct. De exemplu.
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}
Cu toate acestea, o variabilă cu un singur caracter este adesea mai lizibilă:
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}
:Unouval
Dacă variabila este nedefinită nouval este valoarea. Dacă variabila este definită,
valoarea existentă este returnată. Aceasta este o altă caracteristică de realizare a ODE. Este la îndemână pentru setare
CFLAGS pe țintă, de exemplu:
${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
Dacă o valoare este necesară numai dacă variabila este nedefinită, utilizați:
${VAR:D:Unnewval}
:Dnouval
Dacă variabila este definită nouval este valoarea.
:L Numele variabilei este valoarea.
:P Calea nodului care are același nume cu variabila este valoarea. Daca nu asa
nodul există sau calea lui este nulă, atunci se folosește numele variabilei. In asa fel incat
acest modificator să funcționeze, numele (nodul) trebuie să fi apărut cel puțin pe dreapta lui a
dependenţă.
:!cmd!
Ieșirea alergării cmd este valoarea.
:SH Dacă variabila nu este goală, este rulată ca o comandă și rezultatul devine nou
valoare.
::=str
Variabilei i se atribuie valoarea str după înlocuire. Acest modificator și a acestuia
variațiile sunt utile în situații obscure, cum ar fi dorința de a seta o variabilă când
comenzile shell sunt analizate. Acești modificatori de atribuire se extind întotdeauna la nimic,
deci dacă apar într-o linie de regulă de la sine ar trebui să fie precedat de ceva de păstrat
bfake fericit.
"::' ajută la evitarea potrivirilor false cu stilul AT&T System V UNIX := modificator și
întrucât înlocuirea are loc întotdeauna ::= forma este vag adecvată.
::?=str
În ceea ce privește ::= dar numai dacă variabila nu are deja o valoare.
::+=str
Adăuga str la variabila.
::!=cmd
Atribuiți rezultatul lui cmd la variabila.
:[gamă]
Selectează unul sau mai multe cuvinte din valoare sau efectuează alte operațiuni legate de
modul în care valoarea este împărțită în cuvinte.
În mod obișnuit, o valoare este tratată ca o secvență de cuvinte delimitată de spațiu alb. niste
modificatorii suprimă acest comportament, determinând ca o valoare să fie tratată ca un singur cuvânt
(posibil să conțină spațiu alb încorporat). O valoare goală sau o valoare care constă
în întregime de spațiu alb, este tratat ca un singur cuvânt. În sensul „:[]"
modificator, cuvintele sunt indexate ambele înainte folosind numere întregi pozitive (unde indicele 1
reprezintă primul cuvânt) și invers folosind numere întregi negative (unde indicele -1
reprezintă ultimul cuvânt).
gamă este supus expansiunii variabile, iar rezultatul extins este atunci
interpretat astfel:
index Selectează un singur cuvânt din valoare.
Începe..capăt
Selectează toate cuvintele din Începe la capăt, inclusiv. De exemplu, ':[2..-1]' selectează
toate cuvintele de la al doilea cuvânt până la ultimul cuvânt. Dacă Începe este mai mare decât capăt,
apoi cuvintele sunt scoase în ordine inversă. De exemplu, ':[-1..1]' selectează pe toate
cuvintele de la ultimul la primul.
* Determină modificatorii ulterioare să trateze valoarea ca un singur cuvânt (eventual
care conțin spațiu alb încorporat). Analog cu efectul „$*” în Bourne
coajă.
0 Înseamnă la fel ca „:[*]".
@ Determină modificatorii ulterioare să trateze valoarea ca o secvență de cuvinte delimitate
prin spatiu alb. Analog cu efectul „$@” din shell Bourne.
# Returnează numărul de cuvinte din valoare.
INCLUDE DECLARAȚII, CONDIȚIONALE AND PENTRU BUCURI
Includere makefile, structuri condiționate și bucle for care amintesc de programarea C
limba sunt furnizate în bfake. Toate astfel de structuri sunt identificate printr-o linie care începe cu
un singur punct ('.'). Fișierele sunt incluse cu oricare .include ⟨fişier⟩ sau .include
"fişier". Variabilele dintre parantezele unghiulare sau ghilimelele duble sunt extinse pentru a forma fișierul
Nume. Dacă sunt folosite paranteze unghiulare, este de așteptat ca fișierul make inclus să fie în sistem
directorul makefile. Dacă sunt folosite ghilimele duble, directorul care include makefile și orice
directoarele specificate folosind -I opțiunile sunt căutate înaintea directorului de sistem makefile.
Pentru compatibilitate cu alte versiuni ale bfake „include fișierul...” este de asemenea acceptat.
Dacă declarația include este scrisă ca .-include sau ca .sinclude apoi erori de localizare și/sau
deschiderea fișierelor include sunt ignorate.
Dacă declarația include este scrisă ca .dinclude nu numai erorile de localizare și/sau deschidere
includ fișierele ignorate, dar dependențele învechite din fișierul inclus vor fi doar ignorate
ca .FACE.DEPENDFILE.
Expresiile condiționate sunt, de asemenea, precedate de un singur punct ca prim caracter al unei linii.
Condiționalele posibile sunt următoarele:
.eroare mesaj
Mesajul este tipărit împreună cu numele fișierului make și numărul liniei, apoi
bfake va ieși.
.export variabil ...
Exportați variabila globală specificată. Dacă nu este furnizată nicio listă de variabile, toate valorile globale
sunt exportate cu excepția variabilelor interne (cele care încep cu „.”). Acest lucru nu este
afectat de -X steag, deci trebuie folosit cu prudență. Pentru compatibilitate cu
alte bfake programele „export variabilă=valoare” sunt de asemenea acceptate.
Adăugarea unui nume de variabilă la .FACE.EXPORTAT este echivalent cu exportul unei variabile.
.export-env variabil ...
La fel ca „.export”, cu excepția faptului că variabila nu este atașată la .FACE.EXPORTAT.
Acest lucru permite exportul unei valori în mediu care este diferită de cea utilizată
by bfake intern.
.export-literal variabil ...
La fel ca „.export-env”, cu excepția faptului că variabilele din valoare nu sunt extinse.
. Info mesaj
Mesajul este tipărit împreună cu numele makefile-ului și numărul liniei.
.undef variabil
Anulați definirea variabilei globale specificate. Numai variabilele globale pot fi nedefinite.
.neexport variabil ...
Opusul lui „.export”. Globalul specificat variabil va fi eliminat din
.FACE.EXPORTAT. Dacă nu este furnizată nicio listă de variabile, toate valorile globale sunt neexportate și
.FACE.EXPORTAT eliminat.
.uneexport-env
Anulați exportul tuturor globalurilor exportate anterior și curățați mediul din care a fost moștenit
parintele. Această operațiune va provoca o scurgere de memorie a mediului original, deci
trebuie folosit cu moderație. Testarea pentru .FACE.LEVEL fiind 0, ar avea sens. De asemenea
rețineți că orice variabile care au provenit din mediul părinte ar trebui să fie
păstrate în mod explicit dacă se dorește. De exemplu:
.dacă ${.MAKE.LEVEL} == 0
PATH := ${PATH}
.uneexport-env
.export PATH
.endif
Ar avea ca rezultat un mediu care conține doar „PATH”, care este utilul minim
mediu inconjurator. De fapt, „.MAKE.LEVEL” va fi, de asemenea, împins în noul mediu.
.avertizare mesaj
Mesajul prefixat de „avertizare:' este tipărit împreună cu numele makefile-ului
si numarul liniei.
.dacă [!]expresie [operator expresie ...]
Testați valoarea unei expresii.
.ifdef [!]variabil [operator variabil ...]
Testați valoarea unei variabile.
.ifndef [!]variabil [operator variabil ...]
Testați valoarea unei variabile.
.ifmake [!]ţintă [operator ţintă ...]
Testați ținta construită.
.ifnmake [!] ţintă [operator ţintă ...]
Testați ținta construită.
.altfel Inversați sensul ultimului condițional.
.elif [!] expresie [operator expresie ...]
O combinație de '.altfel' urmată de '.dacă".
.elifdef [!]variabil [operator variabil ...]
O combinație de '.altfel' urmată de '.ifdef".
.elifndef [!]variabil [operator variabil ...]
O combinație de '.altfel' urmată de '.ifndef".
.elifmake [!]ţintă [operator ţintă ...]
O combinație de '.altfel' urmată de '.ifmake".
.elifnmake [!]ţintă [operator ţintă ...]
O combinație de '.altfel' urmată de '.ifnmake".
.endif Încheiați corpul condiționalului.
operator poate fi oricare dintre următoarele:
|| SAU logic.
&& ȘI logic; de prioritate mai mare decât „||”.
Ca și în C, bfake va evalua un condițional numai în măsura în care este necesar pentru a-i determina
valoare. Parantezele pot fi folosite pentru a schimba ordinea evaluării. Operatorul boolean '!"
poate fi folosit pentru a nega logic un întreg condițional. Este de prioritate mai mare decât
"&&".
Valoarea a expresie poate fi oricare dintre următoarele:
definit Ia un nume de variabilă ca argument și evaluează la adevărat dacă variabila a fost
definit.
face Ia un nume de țintă ca argument și evaluează la adevărat dacă ținta a fost
specificat ca parte a bfakelinia de comandă a lui sau a fost declarată țintă implicită
(fie implicit sau explicit, vezi .PRINCIPAL) înaintea liniei care conține
condiţional.
gol Preia o variabilă, cu posibili modificatori și evaluează la adevărat dacă expansiunea
a variabilei ar avea ca rezultat un șir gol.
există Ia un nume de fișier ca argument și evaluează ca adevărat dacă fișierul există. The
fișierul este căutat pe calea de căutare a sistemului (vezi .CALE).
ţintă Ia un nume de țintă ca argument și evaluează ca adevărat dacă ținta a fost
definit.
comenzi
Ia un nume de țintă ca argument și evaluează ca adevărat dacă ținta a fost
definit și are comenzi asociate.
Expresie poate fi, de asemenea, o comparație aritmetică sau de șiruri. Se realizează extinderea variabilă
pe ambele părți ale comparației, după care se compară valorile integrale. O valoare este
interpretat ca hexazecimal dacă este precedat de 0x, în caz contrar este zecimal; numere octale
nu sunt suportate. Operatorii relaționali standard C sunt toți acceptați. Dacă după
expansiune variabilă, fie partea stângă, fie partea dreaptă a unui „=="sau"!=' operatorul nu este un
valoare integrală, apoi se realizează compararea șirurilor între variabilele extinse. Daca nu
este dat operatorul relațional, se presupune că variabila extinsă este comparată
față de 0 sau un șir gol în cazul unei comparații de șir.
Cand bfake evaluează una dintre aceste expresii condiționate și întâlnește un (alb-
separat) cuvânt pe care nu îl recunoaște, fie expresia „facă” fie „definită”.
aplicat acestuia, în funcție de forma condiționalului. Dacă forma este „.ifdef"
".ifndef"sau".dacă' se aplică expresia „definită”. În mod similar, dacă forma este
".ifmake"sau".ifnmake, il' se aplică expresia „face”.
Dacă condiționalul se evaluează la adevărat, parsarea fișierului make continuă ca înainte. Daca
se evaluează ca fals, următoarele rânduri sunt sărite. În ambele cazuri, aceasta continuă până la a
".altfel"sau".endif' e gasit.
Buclele For sunt de obicei folosite pentru a aplica un set de reguli unei liste de fișiere. Sintaxa lui a
bucla for este:
.pentru variabil [variabil ...] in expresie
⟨faceți reguli⟩
.endfor
După pentru expresie este evaluat, este împărțit în cuvinte. La fiecare iterație a
buclă, un cuvânt este luat și atribuit fiecăruia variabil, în ordine, și acestea variabile sunt
substituit în face-reguli în interiorul corpului buclei for. Numărul de cuvinte trebuie
ieși chiar; adică dacă există trei variabile de iterație, numărul de cuvinte furnizat
trebuie să fie multiplu de trei.
MESAJ
Comentariile încep cu un caracter hash ('#'), oriunde, decât într-o linie de comandă shell, și
continua până la sfârșitul unei noi linii fără evadare.
SPECIAL SURSE (ATRIBUTE)
.EXEC Ținta nu este niciodată depășită, dar oricum executați întotdeauna comenzi.
.IGNORA Ignorați orice erori de la comenzile asociate cu această țintă, exact ca și cum
toate erau precedate de o liniuță ('-').
.FĂCUT Marcați toate sursele acestei ținte ca fiind actualizate.
.FACE Executați comenzile asociate cu această țintă chiar dacă -n or -t opțiunile au fost
specificat. Folosit în mod normal pentru a marca recursive bfakes.
.META Creați un meta fișier pentru țintă, chiar dacă este marcat ca .FALS, .FACE,
.SPECIAL. Utilizare împreună cu .FACE este cazul cel mai probabil. In "meta"
modul, ținta este învechită dacă meta fișierul lipsește.
.NOMETA Nu creați un meta fișier pentru țintă. De asemenea, fișierele meta nu sunt create pentru
.FALS, .FACE, .SPECIAL ținte.
.NOMETA_CMP
Ignorați diferențele dintre comenzi atunci când decideți dacă ținta este învechită. Aceasta este
util dacă comanda conține o valoare care se modifică întotdeauna. Dacă numărul de
comenzile se schimbă, totuși, ținta va fi încă depășită. Același efect
se aplică oricărei linii de comandă care utilizează variabila .OODATE, care poate fi folosit pentru
acest scop chiar și atunci când nu este necesar sau dorit altfel:
săriți-comparați-pentru-unii:
@echo va fi comparat
@echo acest lucru nu va ${.OODATE:M.NOMETA_CMP}
@echo va fi, de asemenea, comparat
:M modelul suprimă orice extindere a variabilei nedorite.
.NOPATH Nu căutați ținta în directoarele specificate de .CALE.
.NU PRINCIPALĂ În mod normal bfake selectează prima țintă pe care o întâlnește ca țintă implicită
construit dacă nu a fost specificată nicio țintă. Această sursă împiedică această țintă să fie
selectat.
.OPTIONAL
Dacă o țintă este marcată cu acest atribut și bfake nu-mi dau seama cum să creez
acesta, va ignora acest fapt și va presupune că fișierul nu este necesar sau există deja.
.FALS Ținta nu corespunde unui fișier real; este întotdeauna considerat a fi
învechit și nu va fi creat cu -t opțiune. Sufix-transformare
regulile nu se aplică .FALS ținte.
.PREȚIOS
Cand bfake este întrerupt, în mod normal elimină orice ținte parțial realizate. Acest
sursa împiedică îndepărtarea țintei.
.RECURSIV
Sinonim pentru .FACE.
.TĂCUT Nu repetați nici una dintre comenzile asociate cu această țintă, exact ca și cum ar fi
toate au fost precedate de un semn la ("@").
.UTILIZARE Transformă ținta în bfakeversiunea unei macrocomenzi. Când ținta este folosită ca a
sursă pentru o altă țintă, cealaltă țintă dobândește comenzile, sursele și
atribute (cu excepția .UTILIZARE) din sursa. Dacă ținta are deja comenzi,
il .UTILIZARE comenzile țintei le sunt atașate.
.A SE FOLOSI INAINTE DE
Exact ca .UTILIZARE, dar înaintează .A SE FOLOSI INAINTE DE comenzi țintă către țintă.
.AȘTEPTA If .AȘTEPTA apare într-o linie de dependență, sursele care o preced sunt făcute înainte
sursele care îi succed în linie. Din moment ce persoanele dependente de fișiere nu sunt
făcut până când dosarul în sine ar putea fi făcut, acest lucru oprește și dependenții
construite cu excepția cazului în care sunt necesare pentru o altă ramură a arborelui de dependență. Deci dat:
x: a .ASTEPTA b
ecou x
a:
ecou a
b: b1
ecou b
b1:
ecou b1
ieșirea este întotdeauna „a”, „b1”, „b”, „x”.
Ordinea impusă de .AȘTEPTA este relevant doar pentru mărcile paralele.
SPECIAL OBIECTIVE
Țintele speciale nu pot fi incluse cu alte ținte, adică trebuie să fie singura țintă
specificat.
.ÎNCEPE Orice linii de comandă atașate acestei ținte sunt executate înainte de orice altceva
Terminat.
.MOD IMPLICIT
Acesta este un fel de a .UTILIZARE regulă pentru orice țintă (care a fost folosită doar ca sursă) care
bfake nu pot găsi nicio altă modalitate de a crea. Este folosit doar scriptul shell.
.IMPSRC variabilă a unei ținte care moștenește .MOD IMPLICITcomenzile lui este setată la
propriul nume al țintei.
. END Orice linii de comandă atașate acestei ținte sunt executate după ce toate celelalte sunt executate
Terminat.
.EROARE Orice linii de comandă atașate acestei ținte sunt executate atunci când o altă țintă eșuează.
.ERROR_TARGET variabila este setată la ținta care a eșuat. Vezi si
MAKE_PRINT_VAR_ON_ERROR.
.IGNORA Marcați fiecare dintre surse cu .IGNORA atribut. Dacă nu sunt specificate surse,
acesta este echivalentul cu specificarea -i opțiune.
.ÎNTRERUPE
If bfake este întrerupt, comenzile pentru această țintă vor fi executate.
.PRINCIPAL Dacă nu este specificată nicio țintă când bfake este invocată, această țintă va fi construită.
.FACEȚI steaguri
Această țintă oferă o modalitate de a specifica steaguri pentru bfake când este folosit makefile.
Steagurile sunt ca și cum ar fi tastate pe shell, deși -f opțiunea nu va avea niciun efect.
.NOPATH Aplicați .NOPATH atribuite oricăror surse specificate.
.NU PARALEL
Dezactivați modul paralel.
.NU_PARALEL
Sinonim pentru .NU PARALEL, pentru compatibilitate cu alte variante pmake.
.OBJDIR Sursa este o nouă valoare pentru „.OBJDIR'. Daca exista, bfake voi chdir(2) la acesta
și actualizați valoarea lui '.OBJDIR".
.ORDIN Țintele numite sunt făcute în ordine. Această ordonare nu adaugă ținte la
lista de obiective care trebuie realizate. Din moment ce dependenții unei ținte nu se construiesc
până când ținta în sine ar putea fi construită, cu excepția cazului în care „a” este construit de o altă parte a
grafic de dependență, următorul este o buclă de dependență:
.COMANDA: ba
b: la
Ordinea impusă de .ORDIN este relevant doar pentru mărcile paralele.
.CALE Sursele sunt directoare care trebuie căutate pentru fișiere care nu se găsesc în
directorul curent. Dacă nu sunt specificate surse, orice sursă specificată anterior
directoarele sunt șterse. Dacă sursa este cea specială .DOTLAST țintă, apoi
directorul de lucru curent este căutat ultimul.
.CALE.sufix
Aprecieri .CALE dar se aplică numai fișierelor cu un anumit sufix. Sufixul trebuie
au fost declarate anterior cu .SUFIXE.
.FALS Aplicați .FALS atribuite oricăror surse specificate.
.PREȚIOS
Aplicați .PREȚIOS atribuite oricăror surse specificate. Dacă nu există surse
specificat, cel .PREȚIOS atributul este aplicat fiecărei ținte din fișier.
.COAJĂ Setează shell-ul care bfake va folosi pentru a executa comenzi. Sursele sunt un set de
câmp=valoare perechi.
nume Aceasta este specificația minimă, folosită pentru a selecta una dintre cele încorporate
specificații ale carcasei; sh, ksh și csh.
cale Specifică calea către shell.
hasErrCtl Indică dacă shell-ul acceptă ieșirea în caz de eroare.
verifica Comanda pentru a activa verificarea erorilor.
ignora Comanda pentru a dezactiva verificarea erorilor.
ecou Comanda pentru a activa ecoul comenzilor executate.
liniştit Comanda pentru a opri ecoul comenzilor executate.
filtru Ieșirea de filtrat după emiterea liniştit comanda. Este de obicei
identic cu liniştit.
errFlag Steagul pentru a trece shell-ul pentru a activa verificarea erorilor.
echoFlag Steagul pentru a trece shell-ul pentru a activa ecoul comenzii.
linie nouă Literal șir pentru a trece shell-ul care are ca rezultat o singură linie nouă
caracter atunci când este utilizat în afara oricăror caractere de ghilimele.
Exemplu:
.SHELL: name=ksh path=/bin/ksh hasErrCtl=true \
check="set -e" ignore="set +e" \
echo="set -v" quiet="set +v" filter="set +v" \
echoFlag=v errFlag=e newline="'\n'"
.TĂCUT Aplicați .TĂCUT atribuite oricăror surse specificate. Dacă nu sunt specificate surse,
il .TĂCUT atributul este aplicat fiecărei comenzi din fișier.
.STĂTUT Această țintă este rulată atunci când un fișier de dependență conține intrări învechite, având .ALLSRC
setat la numele acelui fișier de dependență.
.SUFIXE
Fiecare sursă specifică un sufix la bfake. Dacă nu sunt specificate surse, oricare
sufixele specificate anterior sunt șterse. Permite crearea de sufix-
regulile de transformare.
Exemplu:
.SUFIXE: .o
.co:
cc -o ${.TARGET} -c ${.IMPSRC}
MEDIUL
bfake utilizează următoarele variabile de mediu, dacă există: MACHINE, MACHINE_ARCH,
MACHINE_MULTIARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, PWD și
TMPDIR.
MAKEOBJDIRPREFIX și MAKEOBJDIR pot fi setate numai în mediu sau pe linia de comandă pentru
bfake și nu ca variabile makefile; vezi descrierea lui '.OBJDIR' pentru mai multe detalii.
Utilizați bmake online folosind serviciile onworks.net