GoGPT Best VPN GoSearch

OnWorks-favicon

pmake - Online in de cloud

Voer pmake uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht pmake die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


bmaken - onderhoud programma-afhankelijkheden

KORTE INHOUD


bmaken [-BeikNnqrstWwX] [-C directory] [-D variabele] [-d vlaggen] [-f makefile] [-I directory]
[-J privaat] [-j max_banen] [-m directory] [-T filet] [-V variabele] [variabele=waarde]
[doel ...]

PRODUCTBESCHRIJVING


bmaken is een programma dat is ontworpen om het onderhoud van andere programma's te vereenvoudigen. Zijn inbreng is een
lijst met specificaties met betrekking tot de bestanden waarvan programma's en andere bestanden afhankelijk zijn. Als Nee -f
makefile makefile optie wordt gegeven, bmaken zal proberen te openen 'makefile' dan 'Makefile'in
om de specificaties te vinden. Als het bestand '.afhangen' bestaat, het wordt gelezen (zie mkdep(1)).

Deze handleidingpagina is uitsluitend bedoeld als referentiedocument. Voor een uitgebreidere beschrijving
of bmaken en makefiles, zie PMaak - A Tutorial.

bmaken zal vóór de inhoud van de MAAK VLAGGEN omgevingsvariabele naar de opdrachtregel
argumenten voordat u ze ontleedt.

De opties zijn als volgt:

-B Probeer achterwaarts compatibel te zijn door een enkele shell per commando uit te voeren
het uitvoeren van de opdrachten om de bronnen van een afhankelijkheidsregel op volgorde te maken.

-C directory
Veranderen naar directory voordat u de makefiles leest of iets anders doet. Als
meervoudig -C opties zijn opgegeven, elk wordt geïnterpreteerd ten opzichte van de vorige:
-C / -C etc is gelijk aan -C / Etc.

-D variabele
Definiëren variabele om 1 te zijn, in de mondiale context.

-d [-]vlaggen
Schakel foutopsporing in en specificeer welke delen van bmaken zijn om foutopsporing af te drukken
informatie. Tenzij de vlaggen worden voorafgegaan door '-', worden ze toegevoegd aan de MAAK VLAGGEN
omgevingsvariabele en zal worden verwerkt door elk kindmaakproces. Standaard,
foutopsporingsinformatie wordt afgedrukt met de standaardfout, maar dit kan worden gewijzigd met behulp van
the F foutopsporingsvlag. De foutopsporingsuitvoer is altijd ongebufferd; bovendien, als
foutopsporing is ingeschakeld, maar de foutopsporingsuitvoer wordt dan niet naar de standaarduitvoer gestuurd
de standaarduitvoer is lijngebufferd. Vlaggen is een of meer van de volgende:

A Druk alle mogelijke foutopsporingsinformatie af; gelijk aan het specificeren van alle
de foutopsporingsvlaggen.

a Foutopsporingsinformatie over zoeken in archieven en caching afdrukken.

C Foutopsporingsinformatie over de huidige werkmap afdrukken.

c Foutopsporingsinformatie over voorwaardelijke evaluatie afdrukken.

d Foutopsporingsinformatie afdrukken over zoeken in mappen en cachen.

e Foutopsporingsinformatie afdrukken over mislukte opdrachten en doelen.

F[+]bestandsnaam
Geef op waar de foutopsporingsuitvoer wordt geschreven. Dit moet de laatste vlag zijn,
omdat het de rest van het argument in beslag neemt. Als het karakter
onmiddellijk nadat de 'F'-vlag '+' is, wordt het bestand geopend in
toevoegmodus; anders wordt het bestand overschreven. Als de bestandsnaam
'stdout' of 'stderr', waarna de foutopsporingsuitvoer naar de standaard wordt geschreven
uitvoer- of standaardfoutuitvoerbestandsdescriptors (en de '+'
optie heeft geen effect). Anders wordt de uitvoer naar het genoemde bestand geschreven
bestand. Als de bestandsnaam eindigt op '.%d', wordt '%d' vervangen door de pid.

f Foutopsporingsinformatie over lusevaluatie afdrukken.

g1 Druk de invoergrafiek af voordat u iets maakt.

g2 Druk de invoergrafiek af nadat u alles hebt gemaakt of voordat u afsluit bij een fout.

g3 Druk de invoergrafiek af voordat u bij een fout afsluit.

j Foutopsporingsinformatie afdrukken over het uitvoeren van meerdere shells.

l Print commando's in Makefiles ongeacht of ze al dan niet vooraf zijn gegaan
door '@' of andere "stille" vlaggen. Ook wel ‘luid’ gedrag genoemd.

M Foutopsporingsinformatie afdrukken over beslissingen in de "meta"-modus over doelen.

m Foutopsporingsinformatie afdrukken over het maken van doelen, inclusief wijziging
data.

n Verwijder de tijdelijke opdrachtscripts die zijn gemaakt tijdens het uitvoeren van opdrachten niet.
Deze tijdelijke scripts worden gemaakt in de map waarnaar wordt verwezen door de
TMPDIR-omgevingsvariabele, of in / tmp als TMPDIR is uitgeschakeld of is ingesteld op de
lege tekenreeks. De tijdelijke scripts zijn gemaakt door mktemp(3), en hebben
namen van het formulier maakXXXXXX. NOTITIE: Hiermee kunt u veel bestanden maken in TMPDIR of
/ tmp, dus wees voorzichtig.

p Foutopsporingsinformatie afdrukken over het parseren van makefiles.

s Foutopsporingsinformatie over achtervoegsel-transformatieregels afdrukken.

t Foutopsporingsinformatie over het onderhoud van de doellijst afdrukken.

V Forceer de -V optie om onbewerkte waarden van variabelen af ​​te drukken.

v Foutopsporingsinformatie afdrukken over toewijzing van variabelen.

x Voer shell-opdrachten uit met -x zodat de daadwerkelijke opdrachten worden afgedrukt zoals ze zijn
uitgevoerd.

-e Geef op dat omgevingsvariabelen macrotoewijzingen binnen makefiles overschrijven.

-f makefile
Geef een makefile op om te lezen in plaats van de standaard 'makefile'. Als makefile is '-'
standaardinvoer wordt gelezen. Er kunnen meerdere makefiles worden gespecificeerd, en deze worden ingelezen in het
bestelling opgegeven.

-I directory
Geef een map op waarin u naar makefiles en opgenomen makefiles wilt zoeken. De
system makefile map (of mappen, zie de -m optie) gebeurt automatisch
opgenomen als onderdeel van deze lijst.

-i Negeer niet-nul exit van shell-commando's in de makefile. Gelijk aan specificeren
'-' voor elke opdrachtregel in de makefile.

-J privaat
Deze optie zou moeten niet door de gebruiker worden opgegeven.

Wanneer de j optie in gebruik is in een recursieve build, deze optie wordt doorgegeven door een make to
het kind maakt om alle maakprocessen in de bouw te laten samenwerken om te voorkomen
overbelasting van het systeem.

-j max_banen
Geef het maximale aantal taken op dat bmaken kan op elk moment actief zijn. De
waarde wordt opgeslagen .MAAK.BANEN. Schakelt de compatibiliteitsmodus uit, tenzij de B vlag is
ook gespecificeerd. Wanneer de compatibiliteitsmodus is uitgeschakeld, worden alle opdrachten die zijn gekoppeld aan a
target worden uitgevoerd in een enkele shell-aanroep, in tegenstelling tot de traditionele
shell-aanroep per regel. Dit kan traditionele scripts die veranderen, doorbreken
mappen bij elke opdrachtaanroep en verwacht dan te beginnen met een nieuw bestand
omgeving op de volgende regel. Het is efficiënter om de scripts te corrigeren
dan achterwaartse compatibiliteit inschakelen.

-k Ga door met verwerken nadat er fouten zijn opgetreden, maar alleen op de doelen die dat wel doen
niet afhankelijk van het doel waarvan de creatie de fout heeft veroorzaakt.

-m directory
Geef een map op waarin u wilt zoeken naar sys.mk en makefiles die zijn opgenomen via de
filet⟩-stijl bevat een verklaring. De -m optie kan meerdere keren worden gebruikt om een
zoek pad. Dit pad overschrijft het standaard systeempad:
/usr/share/mk. Bovendien wordt het systeeminclude-pad aan de zoekopdracht toegevoegd
pad gebruikt voor "filet"-style include-instructies (zie de -I keuze).

Als een bestands- of mapnaam in de -m argument (of de MAKESYSPATH-omgeving
variabele) begint dan met de string ".../". bmaken zal zoeken naar het opgegeven
bestand of map genoemd in het resterende deel van de argumentreeks. De zoektocht
begint met de huidige map van de Makefile en werkt vervolgens omhoog naar de
root van het bestandssysteem. Als de zoekopdracht succesvol is, wordt de resulterende directory
vervangt de ".../"-specificatie in de -m argument. Indien gebruikt, staat deze functie toe
bmaken om eenvoudig in de huidige bronstructuur te zoeken naar aangepaste sys.mk-bestanden (bijv.
door ".../mk/sys.mk" als argument te gebruiken).

-n Geef de opdrachten weer die zouden zijn uitgevoerd, maar voer ze niet daadwerkelijk uit
tenzij het doel afhangt van de speciale .MAKE-bron (zie hieronder).

-N Geef de opdrachten weer die zouden zijn uitgevoerd, maar voer ze niet daadwerkelijk uit
van hen; handig voor het debuggen van makefiles op het hoogste niveau zonder erin af te dalen
submappen.

-q Voer geen opdrachten uit, maar sluit 0 af als de opgegeven doelen up-to-date zijn en
1, anders.

-r Gebruik niet de ingebouwde regels die zijn opgegeven in het systeemmakefile.

-s Echo geen commando's terwijl ze worden uitgevoerd. Gelijk aan specificeren '@' voor
elke opdrachtregel in de makefile.

-T tracebestand
Bij gebruik met de -j vlag, voeg een traceringsrecord toe tracebestand voor elke gestarte taak
en voltooid.

-t In plaats van een doel opnieuw te bouwen zoals gespecificeerd in de makefile, maakt u het of werkt u het bij
de aanpassingstijd om het up-to-date te laten lijken.

-V variabele
Print bmaken's idee van de waarde van variabele, in de mondiale context. Bouw niet
eventuele doelen. Er kunnen meerdere exemplaren van deze optie worden opgegeven; de variabelen zullen dat wel doen
één regel per regel worden afgedrukt, met een lege regel voor elke nul- of ongedefinieerde variabele. Als
variabele een '$' bevat, wordt de waarde vóór het afdrukken uitgebreid.

-W Behandel eventuele waarschuwingen tijdens het parseren van makefiles als fouten.

-w Afdrukken van inkomende en uitgaande telefoonboekberichten, voor- en nabewerking.

-X Exporteer variabelen die via de opdrachtregel zijn doorgegeven niet afzonderlijk naar de omgeving.
Variabelen die op de opdrachtregel worden doorgegeven, worden nog steeds geëxporteerd via het MAAK VLAGGEN
omgevingsvariabele. Deze optie kan nuttig zijn op systemen met een kleine limiet
over de grootte van opdrachtargumenten.

variabele=waarde
Stel de waarde van de variabele in variabele naar waarde. Normaal gesproken worden alle waarden doorgegeven aan de
opdrachtregel worden ook geëxporteerd naar submerken in de omgeving. De -X vlag
schakelt dit gedrag uit. Variabeletoewijzingen moeten de opties voor POSIX volgen
compatibiliteit, maar er wordt geen bestelling afgedwongen.

Er zijn zeven verschillende soorten regels in een makefile: bestandsafhankelijkheidsspecificaties,
shell-commando's, variabeletoewijzingen, include-statements, voorwaardelijke richtlijnen, for-loops,
en opmerkingen.

Over het algemeen kunnen regels van de ene regel naar de volgende worden voortgezet door ze te beëindigen met een backslash
('\'). Het afsluitende teken voor een nieuwe regel en de initiële witruimte op de volgende regel zijn
gecomprimeerd tot een enkele ruimte.

FILE AFHANKELIJKHEID SPECIFICATIES


Afhankelijkheidslijnen bestaan ​​uit een of meer doelen, een operator en nul of meer bronnen.
Dit creëert een relatie waarbij de doelen "afhankelijk" zijn van de bronnen en dat meestal ook zijn
van hen gemaakt. De exacte relatie tussen het doel en de bron wordt bepaald
door de operator die ze scheidt. De drie operators zijn als volgt:

: Een doel wordt als verouderd beschouwd als de wijzigingstijd korter is dan die van enig ander doel
van zijn bronnen. Bronnen voor een doel stapelen zich op over afhankelijkheidslijnen wanneer dit
operator wordt gebruikt. Het doel wordt verwijderd als bmaken wordt onderbroken.

! Doelen worden altijd opnieuw gemaakt, maar niet voordat alle bronnen zijn onderzocht en opnieuw zijn gemaakt.
gecreëerd als nodig. Bronnen voor een doel stapelen zich op over afhankelijkheidslijnen wanneer dit
operator wordt gebruikt. Het doel wordt verwijderd als bmaken wordt onderbroken.

:: Als er geen bronnen zijn opgegeven, wordt het doel altijd opnieuw gemaakt. Anders is het een doelwit
beschouwd als verouderd als een van de bronnen recenter is gewijzigd dan de
doel. Bronnen voor een doel stapelen zich niet op over afhankelijkheidslijnen wanneer dit
operator wordt gebruikt. Het doelwit wordt niet verwijderd als bmaken wordt onderbroken.

Doelen en bronnen kunnen de shell-jokertekenwaarden '?', '*', '[]' en '{}' bevatten. De
waarden '?', '*' en '[]' mogen alleen worden gebruikt als onderdeel van het laatste onderdeel van het doel of
bron, en moet worden gebruikt om bestaande bestanden te beschrijven. De waarde '{}' hoeft niet noodzakelijkerwijs zo te zijn
gebruikt om bestaande bestanden te beschrijven. Uitbreiding vindt plaats in mapvolgorde, niet alfabetisch zoals
gedaan in de schil.

SHELL COMMANDO'S


Aan elk doel kunnen een of meer regels shell-opdrachten zijn gekoppeld, die normaal worden gebruikt
om het doel te creëren. Elk van de regels in dit script Dan moet je voorafgegaan worden door een tabblad. (Voor
historische redenen worden spaties niet geaccepteerd.) Hoewel doelen in veel afhankelijkheid kunnen voorkomen
regels indien gewenst, standaard kan slechts één van deze regels worden gevolgd door een creatiescript.
Als de '::' operator wordt gebruikt, maar alle regels kunnen scripts bevatten en dat zijn de scripts ook
uitgevoerd in de gevonden volgorde.

Elke regel wordt behandeld als een afzonderlijk shell-commando, tenzij het einde van de regel wordt geëscaped met a
backslash ('\'), in welk geval die regel en de volgende worden gecombineerd. Als de eerste tekens
van het commando zijn elke combinatie van '@','+', of '-', wordt het commando speciaal behandeld. A
'@' zorgt ervoor dat de opdracht niet wordt herhaald voordat deze wordt uitgevoerd. A '+' zorgt ervoor dat het commando
worden uitgevoerd, zelfs wanneer -n is gegeven. Dit is vergelijkbaar met het effect van de .MAKE special
source, behalve dat het effect beperkt kan worden tot een enkele regel van een script. A '-'in
de compatibiliteitsmodus zorgt ervoor dat elke afsluitstatus die niet nul is, van de opdrachtregel wordt genegeerd.

. bmaken wordt uitgevoerd in de takenmodus met -j max_banen, wordt het volledige script voor het doel ingevoerd
een enkel exemplaar van de shell. In de compatibiliteitsmodus (niet-taken) wordt elke opdracht uitgevoerd in a
afzonderlijk proces. Als de opdracht shell-metatekens bevat
('#=|^(){};&<>*?[]:$`\\n') het zal worden doorgegeven aan de shell; anders bmaken zal proberen
directe uitvoering. Als een regel begint met '-' en de shell heeft ErrCtl ingeschakeld en mislukt
van de opdrachtregel wordt genegeerd, net als in de compatibiliteitsmodus. Anders '-' beïnvloedt de
gehele baan; het script stopt bij de eerste opdrachtregel die mislukt, maar het doel wel
niet als mislukt worden beschouwd.

Makefiles moeten zo worden geschreven dat de modus van bmaken werking verandert niets aan hun
gedrag. Bijvoorbeeld elk commando dat “cd” of “chdir” moet gebruiken zonder potentieel
het wijzigen van de map voor volgende opdrachten moet tussen haakjes worden geplaatst, zodat deze wordt uitgevoerd
in een onderschaal. Om het gebruik van één granaat te forceren, ontsnap je aan de lijnonderbrekingen om de
hele script één opdracht. Bijvoorbeeld:

vermijd-chdir-bijwerkingen:
@echo $@ bouwen in `pwd`
@(cd ${.CURDIR} && ${MAKE} $@)
@echo Terug in `pwd`

verzekeren-één-shell-ongeacht-van-modus:
@echo $@ opbouwen in `pwd`; \
(cd ${.CURDIR} && ${MAKE} $@); \
echo Terug in `pwd`

Sinds bmaken wil chdir(2) tot '.OBJDIR' Voordat elk kind doelen uitvoert, verwerkt het dit
begint daarmee als de huidige werkmap.

VARIABELE OPDRACHTEN


Variabelen in make lijken veel op variabelen in de shell, en bestaan ​​traditioneel uit alles
hoofdletters.

Veranderlijk toewijzing modifiers
De vijf operators die kunnen worden gebruikt om waarden aan variabelen toe te wijzen zijn als volgt:

= Wijs de waarde toe aan de variabele. Elke eerdere waarde wordt overschreven.

+= Voeg de waarde toe aan de huidige waarde van de variabele.

?= Wijs de waarde toe aan de variabele als deze nog niet is gedefinieerd.

:= Toewijzen met uitbreiding, dwz de waarde uitbreiden voordat u deze aan de variabele toewijst.
Normaal gesproken wordt expansie pas uitgevoerd als naar de variabele wordt verwezen. NOTITIE: Referenties
voor ongedefinieerde variabelen zijn niet uitgebreid. Dit kan problemen veroorzaken als het variabel is
modificatoren worden gebruikt.

!= Vouw de waarde uit en geef deze door aan de shell voor uitvoering en wijs het resultaat toe aan de
variabel. Eventuele nieuwe regels in het resultaat worden vervangen door spaties.

Eventuele witruimte vóór de toegewezen waarde waarde is verwijderd; als de waarde wordt toegevoegd, a
enkele spatie wordt ingevoegd tussen de vorige inhoud van de variabele en de toegevoegde
waarde.

Variabelen worden uitgebreid door de naam van de variabele te omringen met ofwel accolades ('{}') of
haakjes ('()') en ervoor met een dollarteken ('$'). Als de naam van de variabele bevat
slechts een enkele letter, de omringende accolades of haakjes zijn niet vereist. Dit korter
formulier is niet aan te raden.

Als de variabelenaam een ​​dollar bevat, wordt de naam zelf eerst uitgevouwen. Dit maakt het mogelijk
bijna willekeurige namen van variabelen, maar namen die dollar, accolades, haakjes of bevatten
witruimte kan echt het beste worden vermeden!

Als het resultaat van het uitbreiden van een variabele een dollarteken (“$”) bevat, wordt de string uitgebreid
weer.

Variabele substitutie vindt plaats op drie verschillende tijdstippen, afhankelijk van waar de variabele zich bevindt
gebruikt worden.

1. Variabelen in afhankelijkheidsregels worden uitgevouwen terwijl de regel wordt gelezen.

2. Variabelen in shell-opdrachten worden uitgebreid wanneer de shell-opdracht wordt uitgevoerd.

3. “.for”-lusindexvariabelen worden bij elke lus-iteratie uitgebreid. Merk op dat andere
variabelen worden niet binnen lussen uitgevouwen, dus de volgende voorbeeldcode:

.voor ik in 1 2 3
een+= ${i}
j= ${i}
b+= ${j}
.eindvoor

alle:
@echo ${a}
@echo ${b}

zal afdrukken:

1 2 3
3 3 3

Want terwijl ${a} “1 2 3” bevat nadat de lus is uitgevoerd, bevat ${b} “${j}
${j} ${j}” wat zich uitbreidt naar “3 3 3” aangezien ${j} na voltooiing van de lus “3” bevat.

Veranderlijk klassen
De vier verschillende klassen variabelen (in volgorde van toenemende prioriteit) zijn:

Omgevingsvariabelen
Variabelen gedefinieerd als onderdeel van bmaken's omgeving.

Globale variabelen
Variabelen gedefinieerd in de makefile of in meegeleverde makefiles.

Opdrachtregelvariabelen
Variabelen die zijn gedefinieerd als onderdeel van de opdrachtregel.

Lokale variabelen
Variabelen die specifiek zijn gedefinieerd voor een bepaald doel.

Lokale variabelen zijn allemaal ingebouwd en hun waarden variëren op magische wijze van doel tot doel. Het
Het is momenteel niet mogelijk om nieuwe lokale variabelen te definiëren. De zeven lokale variabelen zijn als
volgt:

.ALLSRC De lijst met alle bronnen voor dit doel; ook gekend als '>.

.ARCHIEF De naam van het archiefbestand; ook gekend als '!.

.IMPSRC In regels voor achtervoegseltransformatie is dit de naam/het pad van de bron waaruit het
doel moet worden getransformeerd (de “impliciete” bron); ook gekend als '<'. Het
is niet gedefinieerd in expliciete regels.

.LID De naam van het archieflid; ook gekend als '%.

.OODAAT De lijst met bronnen voor dit doel die als verouderd werden beschouwd; ook bekend
zoals '?.

.VOORVOEGSEL Het bestandsvoorvoegsel van het doel, dat alleen het bestandsgedeelte bevat, geen achtervoegsel
of voorgaande mapcomponenten; ook gekend als '*'. Het achtervoegsel moet zijn
een van de bekende achtervoegsels waarmee is aangegeven .SUFFIXEN of het zal niet zo zijn
erkend.

.DOELWIT De naam van het doel; ook gekend als '@.

De kortere vormen ('>','!','<','%','?','*', en'@') zijn toegestaan ​​voor achteruit
compatibiliteit met historische makefiles en oudere POSIX-make-up en wordt niet aanbevolen.

Varianten van deze variabelen waarbij de interpunctie onmiddellijk wordt gevolgd door 'D' of 'F', bijv
'$(@D)', zijn oudere formulieren die gelijkwaardig zijn aan het gebruik van de ':H'- en ':T'-modificatoren. Deze vormen zijn
geaccepteerd voor compatibiliteit met AT&T System V UNIX makefiles en POSIX, maar dat is niet het geval
aanbevolen.

Vier van de lokale variabelen kunnen worden gebruikt in bronnen op afhankelijkheidslijnen, omdat ze uitbreiden
naar de juiste waarde voor elk doel op de lijn. Deze variabelen zijn '.DOELWIT','.VOORVOEGSEL'
'.ARCHIEF', en'.LID.

Extra ingebouwd variabelen
Daarnaast, bmaken stelt of kent de volgende variabelen:

$ Een enkel dollarteken '$', dwz '$$' wordt uitgevouwen tot een enkel dollarteken.

.ALLE DOELSTELLINGEN De lijst met alle doelen die u tegenkomt in de Makefile. Indien geëvalueerd tijdens
Bij het parseren van Makefile worden alleen de doelen weergegeven die tot nu toe zijn tegengekomen.

.CURDIR Een pad naar de map waarin bmaken is geëxecuteerd. Raadpleeg de beschrijving
van 'PWD' voor meer details.

.INCLUDEDFROMDIR
De directory van het bestand waaruit deze Makefile is opgenomen.

.INCLUDEVANBESTAND
De bestandsnaam van het bestand waaruit dit Makefile is opgenomen.

MAAK de naam dat bmaken werd uitgevoerd met (argv[0]). Voor compatibiliteit bmaken
ook sets .MAKEN met dezelfde waarde. De te gebruiken variabele die de voorkeur heeft, is de
omgevingsvariabele MAKE omdat deze beter compatibel is met andere versies
of bmaken en kan niet worden verward met het speciale doelwit met dezelfde naam.

.MAKE.AFHANKELIJK BESTAND
Geeft het makefile een naam (standaard '.afhangen') waaruit gegenereerde afhankelijkheden zijn
lezen.

.MAKE.EXPAND_VARIABLES
Een booleaanse waarde die het standaardgedrag van de -V optie.

GEEXPORTEERD De lijst met variabelen die zijn geëxporteerd door bmaken.

.MAAK.BANEN Het argument tegen de -j optie.

.MAAK.JOB.PREFIX
If bmaken wordt uitgevoerd met j vervolgens wordt de uitvoer voor elk doel voorafgegaan door een token
'--- target ---' waarvan het eerste deel bestuurbaar is via
.MAAK.JOB.PREFIX. Indien .MAAK.JOB.PREFIX is leeg, er wordt geen token afgedrukt.
Bijvoorbeeld: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] zou
tokens produceren zoals '---make[1234] target ---' waardoor het gemakkelijker wordt om de
mate van parallellisme wordt bereikt.

MAKEFLAGS De omgevingsvariabele 'MAKEFLAGS' mag alles bevatten wat dat ook mag zijn
gespecificeerd op bmaken's opdrachtregel. Alles gespecificeerd op bmaken's opdracht
regel wordt toegevoegd aan de variabele 'MAKEFLAGS', die vervolgens wordt ingevoerd in het
omgeving voor alle programma's die bmaken voert uit.

.MAKE.NIVEAU De recursiediepte van bmaken. Het eerste exemplaar van bmaken zal 0 zijn, en
een verhoogde waarde wordt in de omgeving geplaatst zodat de volgende deze kan zien
generatie. Hierdoor kunnen tests als: .if ${.MAKE.LEVEL} == 0 worden beschermd
dingen die alleen in de eerste instantie moeten worden geëvalueerd bmaken.

.MAKE.MAKEFILE_PREFERENCE
De geordende lijst met makefile-namen (standaard 'makefile','Makefile') Dat
bmaken zal zoeken.

.MAKE.MAKEFILES
De lijst met makefiles die zijn gelezen bmaken, wat handig is voor het volgen
afhankelijkheden. Elk makefile wordt slechts één keer opgenomen, ongeacht het aantal
keer gelezen.

.MAKE.MODE Verwerkt na het lezen van alle makefiles. Kan de modus beïnvloeden bmaken loopt
in. Het kan een aantal trefwoorden bevatten:

compat Like -B, zet bmaken in de "compat"-modus.

meta puts bmaken naar de "meta"-modus, waar metabestanden voor worden gemaakt
elk doel om de opdrachtrun vast te leggen, de gegenereerde uitvoer en
if Filemon(4) beschikbaar is, de systeemoproepen die van zijn
interesse in bmaken. De vastgelegde uitvoer kan erg handig zijn wanneer
fouten diagnosticeren.

curdirOk= bf Normaal bmaken zal geen .meta-bestanden maken in '.CURDIR'. Dit
kan worden overschreven door instelling bf naar een waarde die vertegenwoordigt
True.

env Voor het debuggen kan het nuttig zijn om de omgeving erbij te betrekken
het .meta-bestand.

breedsprakig Als je in de "meta"-modus bent, druk dan een aanwijzing af over het doel dat wordt gebouwd.
Dit is handig als de build verder stil wordt uitgevoerd. De
bericht heeft de waarde afgedrukt van: .MAKE.META.PREFIX.

negeer-cmd Sommige makefiles hebben opdrachten die eenvoudigweg niet stabiel zijn. Dit
trefwoord zorgt ervoor dat ze worden genegeerd om te bepalen of een
doel is verouderd in de "meta"-modus. Zie ook .NOMETA_CMP.

stil= bf If bf Is True: wanneer een .meta-bestand wordt gemaakt, markeer dan het doel
.STIL.

.MAKE.META.BAILIWICK
Biedt in de "meta"-modus een lijst met voorvoegsels die overeenkomen met de mappen
gecontrolleerd door bmaken. Als een bestand dat buiten .OBJDIR maar
binnen genoemd baljuwschap ontbreekt, wordt het huidige doelwit als buitensporig beschouwd
datum.

.MAAK.META.GEMAAKT
In de "meta"-modus bevat deze variabele een lijst met alle bijgewerkte metabestanden.
Als het niet leeg is, kan het worden gebruikt om de verwerking van te activeren .MAKE.META.BESTANDEN.

.MAKE.META.BESTANDEN
In de "meta"-modus bevat deze variabele een lijst met alle gebruikte metabestanden
(al dan niet bijgewerkt). Deze lijst kan worden gebruikt om de metabestanden naar te verwerken
afhankelijkheidsinformatie extraheren.

.MAKE.META.IGNORE_PATHS
Biedt een lijst met padvoorvoegsels die moeten worden genegeerd; omdat de
De verwachting is dat de inhoud in de loop van de tijd zal veranderen. De standaardlijst bevat: '/ dev
/ Etc / proc / tmp / var / run / Var / tmp'

.MAKE.META.PREFIX
Definieert het bericht dat wordt afgedrukt voor elk metabestand dat wordt bijgewerkt in "meta verbose"
modus. De standaardwaarde is:
Gebouw ${.TARGET:H:tA}/${.TARGET:T}

.MAKEOVERRIDES Deze variabele wordt gebruikt om de namen vast te leggen van variabelen die zijn toegewezen op het
opdrachtregel, zodat ze kunnen worden geëxporteerd als onderdeel van 'MAKEFLAGS'. Dit
gedrag kan worden uitgeschakeld door een lege waarde toe te wijzen aan '.MAKEOVERRIDES'
binnen een makefile. Extra variabelen kunnen vanuit een makefile worden geëxporteerd door
hun naam toevoegen aan '.MAKEOVERRIDES'. 'MAKEFLAGS' wordt opnieuw geëxporteerd
wanneer '.MAKEOVERRIDES' wordt gewijzigd.

.MAKE.PATH_FILEMON
If bmaken werd gebouwd met Filemon(4) ondersteuning, dit is ingesteld op het pad van de
apparaat knooppunt. Hierdoor kunnen makefiles deze ondersteuning testen.

.MAAK.PID Het proces-ID van bmaken.

.MAAK.PPID De bovenliggende proces-id van bmaken.

.BESPAAR_DOLLARS
waarde moet een Boolen zijn die bepaalt of '$$' behouden blijft wanneer dit wordt gedaan
':=' toewijzingen. De standaardwaarde is false, voor achterwaartse compatibiliteit. Set
op true voor compatibiliteit met andere merken. Indien ingesteld op false, wordt '$$'
'$' volgens normale evaluatieregels.

MAKE_PRINT_VAR_ON_ERROR
. bmaken stopt vanwege een fout, het drukt de naam en de waarde van af
'.CURDIR' evenals de waarde van eventuele variabelen die daarin worden genoemd
'MAKE_PRINT_VAR_ON_ERROR.

.nieuwe lijn Aan deze variabele wordt eenvoudigweg een newline-teken als waarde toegewezen. Dit
maakt uitbreidingen mogelijk met behulp van de :@ modifier om een ​​nieuwe regel tussen iteraties te plaatsen
van de lus in plaats van een spatie. Bijvoorbeeld het bedrukken van
'MAKE_PRINT_VAR_ON_ERROR' kan worden gedaan als
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.

.OBJDIR Een pad naar de map waar de doelen zijn gebouwd. De waarde ervan is
bepaald door te proberen chdir(2) naar de volgende mappen in volgorde en
met behulp van de eerste wedstrijd:

1. ${MAKEOBJDIRPREFIX}${.CURDIR}

(Alleen als 'MAKEOBJDIRPREFIX' is ingesteld in de omgeving of op het commando
lijn.)

2. ${MAKEOBJDIR}

(Alleen als 'MAKEOBJDIR' is ingesteld in de omgeving of op het commando
lijn.)

3. ${.CURDIR}/obj.${MACHINE}

4. ${.CURDIR}/obj

5. /usr/obj/${.CURDIR}

6. ${.CURDIR}

Variabele uitbreiding wordt uitgevoerd op de waarde voordat deze wordt gebruikt, dus
uitdrukkingen zoals
${.CURDIR:S,^/ Usr / src,/var/obj,}
mag gebruikt worden. Dit is vooral handig bij 'MAKEOBJDIR'.

'.OBJDIR' kan worden gewijzigd in het makefile via het speciale doel '.OBJDIR.
In alle gevallen, bmaken wil chdir(2) naar de opgegeven map als deze bestaat,
En instellen '.OBJDIR' en 'PWD' naar die map voordat er doelen worden uitgevoerd.

.PARSEDIR Een pad naar de map van de huidige 'Makefile' wordt ontleed.

.PARSEFILE De basisnaam van de huidige 'Makefile' wordt ontleed. Deze variabele en
'.PARSEDIR' worden beide alleen ingesteld terwijl de 'Maakbestanden' worden ontleed. Als
Als u hun huidige waarden wilt behouden, wijst u ze toe aan een variabele met behulp van
opdracht met uitbreiding: (':=').

.PAD Een variabele die de lijst met mappen vertegenwoordigt bmaken zal zoeken
voor bestanden. De zoeklijst moet worden bijgewerkt met het doel '.PAD'
in plaats van de variabele.

PWD Alternatief pad naar de huidige map. bmaken normaal ingesteld '.CURDIR' tot
het canonieke pad gegeven door krijgcwd(3). Als de omgevingsvariabele
'PWD' is ingesteld en geeft dan een pad naar de huidige map bmaken sets
'.CURDIR' in plaats daarvan naar de waarde van 'PWD'. Dit gedrag is uitgeschakeld als
'MAKEOBJDIRPREFIX' is ingesteld of 'MAKEOBJDIR' bevat een variabele transformatie.
'PWD' is ingesteld op de waarde '.OBJDIR' voor alle programma's die bmaken
voert uit.

.TARGETS De lijst met doelen die expliciet zijn opgegeven op de opdrachtregel, indien aanwezig.

VPATH Door dubbele punten gescheiden (“:”) lijsten met mappen die bmaken zal naar bestanden zoeken.
De variabele wordt alleen ondersteund voor compatibiliteit met oude make-programma's, use
'.PAD' in plaats daarvan.

Veranderlijk modifiers
Variabele-uitbreiding kan worden gewijzigd om elk woord van de variabele te selecteren of te wijzigen (waarbij a
“woord” is een door witruimte gescheiden reeks tekens). Het algemene formaat van een variabele
uitbreiding is als volgt:

${variabele[:modifier[:...]]}

Elke modifier begint met een dubbele punt, die kan worden geëscaped met een backslash ('\').

Een reeks modifiers kan als volgt via een variabele worden gespecificeerd:

modificator_variabele=modificator[:...]
${variabele:${modifier_variabele}[:...]}

In dit geval begint de eerste modifier in de modifier_variable niet met een dubbele punt, aangezien
die in de verwijzende variabele moet voorkomen. Als een van de modifiers in de
modifier_variable bevat een dollarteken ("$"), deze moeten worden verdubbeld om vroegtijdige fouten te voorkomen
uitbreiding.

De ondersteunde modifiers zijn:

:E Vervangt elk woord in de variabele door zijn achtervoegsel.

:H Vervangt elk woord in de variabele door alles behalve het laatste onderdeel.

:Mpatroon
Selecteer alleen de woorden die overeenkomen patroon. De standaard shell-jokertekens
('*', '?' en '[]') mogen worden gebruikt. De jokertekens kunnen worden geëscaped met een
backslash ('\'). Als gevolg van de manier waarop waarden worden opgesplitst in woorden, gematcht en
vervolgens samengevoegd, een constructie zoals
${VAR:M*}
zal de spatiëring tussen de woorden normaliseren, waarbij alle voor- en achterspaties worden verwijderd, en
meerdere opeenvolgende spaties omzetten in enkele spaties.

:Npatroon
Dit is identiek aan ':M', maar selecteert alle woorden die niet overeenkomen patroon.

:O Sorteer elk woord in variabele alfabetisch. Om woorden in omgekeerde volgorde te sorteren, gebruikt u de
':O:[-1..1]' combinatie van modificatoren.

:Os Willekeurige woorden in variabele. Elke keer dat u verwijst, zullen de resultaten anders zijn
naar de gewijzigde variabele; gebruik de opdracht met uitbreiding (':=') om dit te voorkomen
gedrag. Bijvoorbeeld,

LIST= uno due tre quattro
RANDOM_LIST= ${LIST:Ox}
STATIC_RANDOM_LIST:= ${LIST:Ox}

alle:
@echo "${RANDOM_LIST}"
@echo "${RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
kan output produceren die vergelijkbaar is met:

quattro due tre uno
tre due quattro uno
vanwege een quattro tre
vanwege een quattro tre

:Q Citeert elk shell-metateken in de variabele, zodat het veilig kan worden doorgegeven
door recursieve aanroepingen van bmaken.

:R Vervangt elk woord in de variabele door alles behalve het achtervoegsel.

:gmtijd
De waarde is een opmaaktekenreeks voor tijd(3), gebruikmakend van de stroom gmtijd(3).

:hasj
Bereken een 32-bits hash van de waarde en codeer deze als hexadecimale cijfers.

:lokale tijd
De waarde is een opmaaktekenreeks voor tijd(3), gebruikmakend van de stroom lokale tijd(3).

:tA Probeer de variabele naar een absoluut pad te converteren met behulp van echt pad(3), als dat niet lukt, wordt de
waarde is onveranderd.

:tl Converteert variabele naar kleine letters.

:tsc
Woorden in de variabele worden normaal gesproken gescheiden door een spatie bij uitbreiding. Deze modificator
stelt het scheidingsteken in op het teken c. Indien c wordt weggelaten, wordt er geen scheidingsteken gebruikt.
De gebruikelijke ontsnappingen (inclusief octale numerieke codes) werken zoals verwacht.

:tu Converteert variabele naar hoofdletters.

:tW Zorgt ervoor dat de waarde wordt behandeld als één woord (dat mogelijk ingesloten wit bevat).
ruimte). Zie ook ':[*].

: tw Zorgt ervoor dat de waarde wordt behandeld als een reeks woorden, gescheiden door witruimte. Zien
ook ':[@].

:S/oude_string/nieuwe_tekenreeks/[1gW]
Wijzig het eerste voorkomen van oude_string in de waarde van de variabele, en vervangt deze door
nieuwe_tekenreeks. Als een 'g' wordt toegevoegd aan de laatste schuine streep van het patroon, worden alle exemplaren in
elk woord wordt vervangen. Alleen als er een '1' wordt toegevoegd aan de laatste schuine streep van het patroon
het eerste woord wordt beïnvloed. Als een 'W' wordt toegevoegd aan de laatste schuine streep van het patroon,
vervolgens wordt de waarde behandeld als een enkel woord (mogelijk met ingebedde witruimte).
If oude_string begint met een dakje ('^'), oude_string is verankerd aan het begin van
elk woord. Als oude_string eindigt met een dollarteken ('$'), het is verankerd aan het einde van
elk woord. Binnen nieuwe_tekenreeks, wordt een ampersand ('&') vervangen door oude_string (zonder
elke '^' of '$'). Elk teken kan worden gebruikt als scheidingsteken voor de delen van de
modificatiereeks. De verankerings-, ampersand- en scheidingstekens kunnen worden voorzien van een escape-teken
een backslash ('\').

Variabele expansie vindt in beide op de normale manier plaats oude_string en nieuwe_tekenreeks
met als enige uitzondering dat een backslash wordt gebruikt om de expansie van een dollar te voorkomen
teken ('$'), niet een voorafgaand dollarteken zoals gebruikelijk.

:C/patroon/vervanging/[1gW]
De :C modifier is net als de :S modifier behalve dat de oude en nieuwe snaren,
in plaats van eenvoudige strings te zijn, zijn het een uitgebreide reguliere expressie (zie regex(3))
snaar patroon en een ed(1)-stijl string vervanging. Normaal gesproken de eerste gebeurtenis
van het patroon patroon in elk woord van de waarde wordt vervangen door vervanging. De
'1'-modificator zorgt ervoor dat de vervanging op maximaal één woord van toepassing is; de 'g'-modificator
zorgt ervoor dat de vervanging van toepassing is op zoveel mogelijk exemplaren van het zoekpatroon patroon as
voorkomen in het woord of de woorden waarin het voorkomt; de 'W'-modifier zorgt ervoor dat de waarde is
behandeld als een enkel woord (mogelijk met ingebedde witruimte). Merk op dat '1' en
'g' zijn orthogonaal; de eerste geeft aan of meerdere woorden mogelijk zijn
beïnvloed, waarbij laatstgenoemde aangeeft of binnen elk ervan mogelijk meerdere vervangingen kunnen plaatsvinden
getroffen woord.

Wat de :S modifier, de patroon en vervanging zijn onderhevig aan variabele expansie
voordat het wordt geparseerd als reguliere expressies.

:T Vervangt elk woord in de variabele door zijn laatste component.

:u Verwijder aangrenzende dubbele woorden (zoals uniek(1)).

:?waar_tekenreeks:valse_tekenreeks
Als de naam van de variabele (niet de waarde ervan), wanneer deze wordt geparseerd als een voorwaardelijke expressie .if,
evalueert naar waar, retourneert als waarde de waar_tekenreeks, anders retourneer de
valse_tekenreeks. Omdat de naam van de variabele als uitdrukking wordt gebruikt, wordt :? moet de eerste zijn
modifier achter de naam van de variabele zelf - die uiteraard meestal zal bevatten
variabele uitbreidingen. Een veel voorkomende fout is het gebruik van uitdrukkingen als
${NUMBERS:M42:?match:no}
die feitelijk gedefinieerd (NUMBERS) test, om te bepalen of woorden overeenkomen met "42" die u nodig hebt
gebruik zoiets als:
${"${NUMBERS:M42}" != "":?match:no}.

:old_string=nieuwe_string
Dit is de vervanging van variabelen in AT&T System V UNIX-stijl. Het moet de laatste zijn
modifier opgegeven. Als oude_string or nieuwe_tekenreeks bevatten niet de patroonovereenkomst
karakter % dan wordt aangenomen dat ze aan het einde van elk woord zijn verankerd, dus alleen
achtervoegsels of hele woorden kunnen worden vervangen. Anders % is de subtekenreeks van oude_string
erin vervangen worden nieuwe_tekenreeks.

Variabele expansie vindt in beide op de normale manier plaats oude_string en nieuwe_tekenreeks
met als enige uitzondering dat een backslash wordt gebruikt om de expansie van een dollar te voorkomen
teken ('$'), niet een voorafgaand dollarteken zoals gebruikelijk.

:@temp@snaar@
Dit is het lusuitbreidingsmechanisme van het merk OSF Development Environment (ODE).
Anders .voor De uitbreiding van de lussen vindt plaats op het moment van referentie. Toewijzen temp bij elk woord
in de variabele en evalueer snaar. Dat is de ODE-conventie temp moet beginnen en
eindigen met een punt. Bijvoorbeeld.
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}

Een variabele met één teken is echter vaak beter leesbaar:
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}

:Unieuwval
Als de variabele niet gedefinieerd is nieuwval is de waarde. Als de variabele is gedefinieerd, wordt de
bestaande waarde wordt geretourneerd. Dit is een andere ODE-make-functie. Het is handig voor het instellen
per doel CFLAGS bijvoorbeeld:
${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
Als een waarde alleen vereist is als de variabele niet gedefinieerd is, gebruik dan:
${VAR:D:Unewval}

:Dnieuwval
Als de variabele is gedefinieerd nieuwval is de waarde.

:L De naam van de variabele is de waarde.

:P Het pad van het knooppunt dat dezelfde naam heeft als de variabele is de waarde. Als dat niet het geval is
knooppunt bestaat of het pad ervan is nul, dan wordt de naam van de variabele gebruikt. Om voor
Om deze modifier te laten werken, moet de naam (knooppunt) op zijn minst op de rechterkant van a zijn verschenen
afhankelijkheid.

:!cmd!
De output van hardlopen cmd is de waarde.

:NS Als de variabele niet leeg is, wordt deze uitgevoerd als een opdracht en wordt de uitvoer de nieuwe
waarde.

::=str
Aan de variabele wordt de waarde toegewezen str na vervanging. Deze modifier en zijn
variaties zijn handig in obscure situaties, zoals wanneer u een variabele wilt instellen
shell-opdrachten worden geparseerd. Deze toewijzingsmodificatoren breiden zich altijd uit tot niets,
dus als ze op zichzelf in een regel verschijnen, moet dit worden voorafgegaan door iets om te behouden
bmaken gelukkig.

Het '::' helpt valse overeenkomsten met de AT&T System V UNIX-stijl te voorkomen := modificator en
aangezien vervanging altijd plaatsvindt ::= vorm is vaag geschikt.

::?=str
Wat betreft ::= maar alleen als de variabele nog geen waarde heeft.

::+=str
toevoegen str naar de variabele.

::!=cmd
Wijs de uitvoer toe van cmd naar de variabele.

:[reeks]
Selecteert een of meer woorden uit de waarde, of voert andere bewerkingen uit die verband houden met de
manier waarop de waarde in woorden wordt verdeeld.

Normaal gesproken wordt een waarde behandeld als een reeks woorden, begrensd door witruimte. Sommige
modifiers onderdrukken dit gedrag, waardoor een waarde als één woord wordt behandeld
(mogelijk met ingebedde witruimte). Een lege waarde, of een waarde die bestaat
volledig uit witruimte bestaat, wordt behandeld als één enkel woord. Met het oog op de ':[]'
modifier, de woorden worden beide voorwaarts geïndexeerd met behulp van positieve gehele getallen (waarbij index 1
vertegenwoordigt het eerste woord), en achteruit met behulp van negatieve gehele getallen (waarbij index -1
vertegenwoordigt het laatste woord).

De reeks wordt onderworpen aan variabele expansie, en het uitgebreide resultaat is dan
als volgt geïnterpreteerd:

index Selecteert één woord uit de waarde.

begin..einde
Selecteert alle woorden uit begin naar einde, inclusief. Bijvoorbeeld, ':[2..-1]' selecteert
alle woorden vanaf het tweede woord tot het laatste woord. Als begin groter dan einde,
Vervolgens worden de woorden in omgekeerde volgorde uitgevoerd. Bijvoorbeeld, ':[-1..1]' selecteert alles
de woorden van de laatste naar de eerste.

* Zorgt ervoor dat volgende modifiers de waarde als één woord behandelen (mogelijk
met ingebedde witruimte). Analoog aan het effect van "$*" in Bourne
schelp.

0 Betekent hetzelfde als ':[*].

@ Zorgt ervoor dat volgende modifiers de waarde behandelen als een reeks gescheiden woorden
door witruimte. Analoog aan het effect van "$@" in Bourne-shell.

# Retourneert het aantal woorden in de waarde.

BEVATTEN VERKLARINGEN, VOORWAARDEN EN VOOR LUS


Makefile-opname, voorwaardelijke structuren en for-lussen die doen denken aan de C-programmering
taal worden aangeboden bmaken. Al dergelijke structuren worden geïdentificeerd door een lijn die begint met
een teken met één punt ('.'). Bestanden worden bij beide meegeleverd .erbij betrekkenfilet⟩ of .erbij betrekken
"filet". Variabelen tussen de punthaken of dubbele aanhalingstekens worden uitgevouwen om het bestand te vormen
naam. Als er hoekbeugels worden gebruikt, wordt verwacht dat het meegeleverde makefile in het systeem aanwezig is
makefile-map. Als er dubbele aanhalingstekens worden gebruikt, worden de directory van het makefile en eventuele
mappen die zijn opgegeven met behulp van de -I optie worden doorzocht vóór de makefile-directory van het systeem.
Voor compatibiliteit met andere versies van bmaken 'include file...' wordt ook geaccepteerd.

Als de include-instructie is geschreven als .-erbij betrekken of als .inclusief dan fouten bij het lokaliseren en/of
het openen van include-bestanden wordt genegeerd.

Als de include-instructie is geschreven als .include er zijn niet alleen fouten bij het lokaliseren en/of openen
include-bestanden worden genegeerd, maar verouderde afhankelijkheden binnen het opgenomen bestand worden gewoon genegeerd
als .MAKE.AFHANKELIJK BESTAND.

Voorwaardelijke uitdrukkingen worden ook voorafgegaan door een enkele punt als eerste teken van een regel.
De mogelijke voorwaardelijke bepalingen zijn als volgt:

.fout bericht
Het bericht wordt vervolgens afgedrukt samen met de naam van het makefile en het regelnummer
bmaken zal afsluiten.

.exporteren variabele ...
Exporteer de opgegeven globale variabele. Als er geen variabelenlijst is opgegeven, zijn alle globals
worden geëxporteerd, behalve interne variabelen (die beginnen met '.'). Dit is niet
beïnvloed door de -X vlag, dus moet met voorzichtigheid worden gebruikt. Voor compatibiliteit met
Overige bmaken programma's 'export variabele=waarde' worden ook geaccepteerd.

Een variabelenaam toevoegen aan GEEXPORTEERD is gelijk aan het exporteren van een variabele.

.export-env variabele ...
Hetzelfde als '.export', behalve dat de variabele niet wordt toegevoegd GEEXPORTEERD.
Dit maakt het mogelijk een waarde naar de omgeving te exporteren die verschilt van de gebruikte waarde
by bmaken intern.

.export-letterlijk variabele ...
Hetzelfde als '.export-env', behalve dat variabelen in de waarde niet worden uitgebreid.

. Info bericht
Het bericht wordt afgedrukt samen met de naam van het makefile en het regelnummer.

.undef variabele
Maak de definitie van de opgegeven globale variabele ongedaan. Alleen globale variabelen mogen ongedefinieerd zijn.

.unexporteren variabele ...
Het tegenovergestelde van '.export'. Het opgegeven globale variabele zal worden verwijderd uit
GEEXPORTEERD. Als er geen variabelenlijst is opgegeven, worden alle globale waarden niet geëxporteerd, en
GEEXPORTEERD geschrapt.

.unexport-env
Maak de export van alle eerder geëxporteerde globals ongedaan en wis de geërfde omgeving
de ouder. Deze bewerking veroorzaakt een geheugenlek in de oorspronkelijke omgeving, dus
moet spaarzaam worden gebruikt. Testen voor .MAKE.NIVEAU 0 zijn zou logisch zijn. Ook
Houd er rekening mee dat alle variabelen die hun oorsprong vinden in de bovenliggende omgeving, dat wel zouden moeten zijn
indien gewenst expliciet behouden. Bijvoorbeeld:

.if ${.MAKE.LEVEL} == 0
PAD := ${PATH}
.unexport-env
.export PAD
. Endif

Zou resulteren in een omgeving die alleen 'PATH' bevat, wat het minimaal bruikbare is
omgeving. Eigenlijk zal '.MAKE.LEVEL' ook in de nieuwe omgeving worden gepusht.

.waarschuwing bericht
Het bericht voorafgegaan door 'waarschuwing:' wordt samen met de naam van het makefile afgedrukt
en lijnnummer.

.indienuitdrukking [operator uitdrukking ...]
Test de waarde van een uitdrukking.

.ifdefvariabele [operator variabele ...]
Test de waarde van een variabele.

.ifndefvariabele [operator variabele ...]
Test de waarde van een variabele.

.ifmakedoel [operator doel ...]
Test het doelwit dat wordt gebouwd.

.ifnmakedoel [operator doel ...]
Test het doelwit dat wordt gebouwd.

.anders Keer de betekenis van de laatste voorwaarde om.

.elifuitdrukking [operator uitdrukking ...]
Een combinatie van '.anders' gevolgd door '.indien.

.elifdefvariabele [operator variabele ...]
Een combinatie van '.anders' gevolgd door '.ifdef.

.elifndefvariabele [operator variabele ...]
Een combinatie van '.anders' gevolgd door '.ifndef.

.elifmakedoel [operator doel ...]
Een combinatie van '.anders' gevolgd door '.ifmake.

.elifnmakedoel [operator doel ...]
Een combinatie van '.anders' gevolgd door '.ifnmake.

. Endif Beëindig de hoofdtekst van de voorwaardelijke.

De operator kan een van de volgende zijn:

|| Logische OF.

&& Logische EN; met een hogere prioriteit dan “||”.

Zoals in C, bmaken evalueert een voorwaardelijke alleen voor zover nodig is om de voorwaarde te bepalen
waarde. Haakjes kunnen worden gebruikt om de volgorde van evaluatie te wijzigen. De booleaanse operator '!'
kan worden gebruikt om een ​​hele voorwaardelijke logisch te ontkennen. Het heeft een hogere prioriteit dan
'&&.

De waarde van uitdrukking kan een van de volgende zijn:

gedefinieerd Neemt de naam van een variabele als argument en evalueert naar true als de variabele dat is geweest
gedefinieerd.

maken Neemt een doelnaam als argument en evalueert naar waar als het doel was
opgegeven als onderdeel van bmaken's opdrachtregel of werd uitgeroepen tot het standaarddoel
(impliciet of expliciet, zie .VOORNAAMST) voor de regel met de
voorwaardelijk.

leeg Neemt een variabele, met mogelijke modifiers, en evalueert naar true als de uitbreiding
van de variabele zou resulteren in een lege string.

bestaat Neemt een bestandsnaam als argument en evalueert naar waar als het bestand bestaat. De
bestand wordt gezocht op het zoekpad van het systeem (zie .PAD).

doel Neemt een doelnaam als argument en evalueert naar waar als het doel is geweest
gedefinieerd.

commando's
Neemt een doelnaam als argument en evalueert naar waar als het doel is geweest
gedefinieerd en waaraan opdrachten zijn gekoppeld.

Expressie kan ook een rekenkundige of stringvergelijking zijn. Er wordt variabele expansie uitgevoerd
aan beide kanten van de vergelijking, waarna de integrale waarden worden vergeleken. Een waarde is
geïnterpreteerd als hexadecimaal als het wordt voorafgegaan door 0x, anders is het decimaal; octale getallen
worden niet ondersteund. De standaard relationele C-operatoren worden allemaal ondersteund. Als na
variabele expansie, de linker- of rechterkant van een '=='of'!='operator is geen
integrale waarde, waarna een stringvergelijking wordt uitgevoerd tussen de uitgebreide variabelen. Als Nee
relationele operator wordt gegeven, wordt aangenomen dat de uitgebreide variabele wordt vergeleken
tegen 0 of een lege string in het geval van een stringvergelijking.

. bmaken evalueert een van deze voorwaardelijke uitdrukkingen en komt een (wit-
door een spatie gescheiden) woord dat het niet herkent, is de uitdrukking “make” of “gedefinieerd”.
erop toegepast, afhankelijk van de vorm van de voorwaardelijke voorwaarde. Als het formulier '.ifdef'
'.ifndef', of '.indien' de “gedefinieerde” uitdrukking wordt toegepast. Evenzo, als het formulier dat is
'.ifmake'of'.ifnmake, the' 'make'-expressie wordt toegepast.

Als de voorwaardelijke waarde waar is, gaat het ontleden van de makefile door zoals voorheen. Als het
resulteert in onwaar, worden de volgende regels overgeslagen. In beide gevallen gaat dit door tot a
'.anders'of'. Endif' is gevonden.

For-lussen worden meestal gebruikt om een ​​reeks regels toe te passen op een lijst met bestanden. De syntaxis van een
voor lus is:

.voor variabele [variabele ...] in uitdrukking
⟨make-regels⟩
.eindvoor

Na de voor uitdrukking wordt geëvalueerd, wordt het in woorden opgesplitst. Bij elke iteratie van de
lus, wordt één woord genomen en aan elk woord toegewezen variabele, in volgorde, en deze variabelen zijn
vervangen in de make-regels in de body van de for-lus. Het aantal woorden moet
kom er zelfs uit; dat wil zeggen, als er drie iteratievariabelen zijn, het aantal verstrekte woorden
moet een veelvoud van drie zijn.

OPMERKINGEN


Opmerkingen beginnen met een hekje ("#"), overal behalve in een shell-opdrachtregel, en
Ga door tot het einde van een nieuwe regel die nog niet is ontsnapt.

. BRONNEN (ATTRIBUTEN)


.EXEC Target is nooit verouderd, maar voert toch altijd opdrachten uit.

.NEGEREN Negeer eventuele fouten van de opdrachten die aan dit doel zijn gekoppeld, precies alsof
ze werden allemaal voorafgegaan door een streepje ('-').

.GEMAAKT Markeer alle bronnen van dit doel als actueel.

.MAKEN Voer de opdrachten uit die aan dit doel zijn gekoppeld, zelfs als de -n or -t opties waren:
gespecificeerd. Normaal gesproken gebruikt om recursief te markeren bmakens.

.META Maak een metabestand voor het doel, zelfs als dit is gemarkeerd als .NEP, .MAKENof
.SPECIAAL. Gebruik in combinatie met .MAKEN is het meest waarschijnlijke geval. In "meta"
modus is het doel verouderd als het metabestand ontbreekt.

.NOMETA Maak geen metabestand voor het doel. Er worden ook geen metabestanden voor gemaakt
.NEP, .MAKENof .SPECIAAL targets.

.NOMETA_CMP
Negeer verschillen in opdrachten bij het bepalen of het doel verouderd is. Dit is
handig als het commando een waarde bevat die altijd verandert. Als het aantal
commando's veranderen, maar het doel zal nog steeds verouderd zijn. Hetzelfde effect
is van toepassing op elke opdrachtregel die de variabele gebruikt .OODAAT, die kan worden gebruikt voor
dat doel, zelfs wanneer dit niet anderszins nodig of gewenst is:

skip-vergelijk-voor-sommige:
@echo, dit wordt vergeleken
@echo dit zal niet ${.OODATE:M.NOMETA_CMP}
@echo dit wordt ook vergeleken

De :M patroon onderdrukt elke uitbreiding van de ongewenste variabele.

.NOPAD Zoek niet naar het doel in de mappen gespecificeerd door .PAD.

.NIET Normaal bmaken selecteert het eerste doelwit dat het tegenkomt als het standaard doelwit
gebouwd als er geen doel was opgegeven. Deze bron voorkomt dat dit doelwit bestaat
gekozen.

.OPTIONEEL
Als een doel is gemarkeerd met dit attribuut en bmaken kan niet bedenken hoe ik moet creëren
het zal dit feit negeren en ervan uitgaan dat het bestand niet nodig is of al bestaat.

.NEP Het doel komt niet overeen met een daadwerkelijk bestand; zo wordt het altijd beschouwd
verouderd en zal niet worden gemaakt met de -t keuze. Achtervoegsel-transformatie
regels worden niet toegepast .NEP targets.

.SCHITTEREND
. bmaken wordt onderbroken, worden normaal gesproken gedeeltelijk gemaakte doelen verwijderd. Dit
bron voorkomt dat het doel wordt verwijderd.

.RECURSIEF
synoniem voor .MAKEN.

.STIL Herhaal geen van de opdrachten die aan dit doel zijn gekoppeld, precies alsof ze
ze werden allemaal voorafgegaan door een apenstaartje ('@').

.GEBRUIK Verander het doel in bmaken's versie van een macro. Wanneer het doel wordt gebruikt als een
bron voor een ander doel, verkrijgt het andere doel de commando's, bronnen en
attributen (behalve .GEBRUIK) van de bron. Als het doelwit al commando's heeft,
the .GEBRUIK de commando's van het doelwit worden eraan toegevoegd.

.TEN MINSTE HOUDBAAR
Precies zoals .GEBRUIK, maar vóór de .TEN MINSTE HOUDBAAR doelopdrachten naar het doel.

.WACHTEN If .WACHTEN verschijnt in een afhankelijkheidslijn, de bronnen die eraan voorafgaan, zijn eerder gemaakt
de bronnen die het opvolgen in de lijn. Omdat de afhankelijke bestanden van bestanden dat niet zijn
gemaakt totdat het bestand zelf kon worden gemaakt, dit stopt ook de afhankelijke personen
gebouwd tenzij ze nodig zijn voor een andere tak van de afhankelijkheidsboom. Dus gegeven:

x: a .WACHT b
echo x
a:
echo een
b: b1
echo b
b1:
echo b1

de uitvoer is altijd 'a', 'b1', 'b', 'x'.
Het bevel opgelegd door .WACHTEN is alleen relevant voor parallelle merken.

. DOELSTELLINGEN


Speciale doelen mogen niet bij andere doelen worden gevoegd, dat wil zeggen dat ze het enige doel moeten zijn
gespecificeerd.

.BEGINNEN Alle opdrachtregels die aan dit doel zijn gekoppeld, worden uitgevoerd voordat al het andere wordt uitgevoerd
gedaan.

.STANDAARD
Dit is een soort van een .GEBRUIK regel voor elk doel (dat alleen als bron werd gebruikt) dat
bmaken kan geen andere manier bedenken om te creëren. Alleen het shellscript wordt gebruikt.
De .IMPSRC variabele van een doel dat overerft .STANDAARD's commando's is ingesteld op de
doel zijn eigen naam.

. END Alle opdrachtregels die aan dit doel zijn gekoppeld, worden uitgevoerd nadat al het andere is uitgevoerd
gedaan.

.FOUT Alle opdrachtregels die aan dit doel zijn gekoppeld, worden uitgevoerd wanneer een ander doel faalt.
De .ERROR_TARGET variabele is ingesteld op het doel dat is mislukt. Zie ook
MAKE_PRINT_VAR_ON_ERROR.

.NEGEREN Markeer elk van de bronnen met de .NEGEREN attribuut. Als er geen bronnen zijn vermeld,
dit is het equivalent van het specificeren van de -i optie.

.ONDERBREKEN
If bmaken wordt onderbroken, worden de opdrachten voor dit doel uitgevoerd.

.VOORNAAMST Als er geen doel is opgegeven wanneer bmaken wordt aangeroepen, zal dit doel worden gebouwd.

.MAAK VLAGGEN
Dit doel biedt een manier om vlaggen op te geven voor bmaken wanneer de makefile wordt gebruikt.
De vlaggen zijn alsof ze in de shell zijn getypt, hoewel de -f optie heeft geen effect.

.NOPAD Breng de .NOPAD toeschrijven aan gespecificeerde bronnen.

.NIETPARALLEL
Schakel de parallelle modus uit.

.NO_PARALLEL
synoniem voor .NIETPARALLEL, voor compatibiliteit met andere pmake-varianten.

.OBJDIR De bron is een nieuwe waarde voor '.OBJDIR'. Als het bestaat, bmaken wil chdir(2) eraan
en update de waarde van '.OBJDIR.

.VOLGORDE De genoemde doelen worden in volgorde gemaakt. Deze volgorde voegt geen doelen toe aan de
lijst met doelstellingen die gemaakt moeten worden. Omdat de afhankelijke personen van een doelwit niet worden gebouwd
totdat het doel zelf gebouwd kon worden, tenzij 'a' door een ander deel van de
afhankelijkheidsgrafiek, het volgende is een afhankelijkheidslus:

.BESTELLING: ba
b: een

Het bevel opgelegd door .VOLGORDE is alleen relevant voor parallelle merken.

.PAD De bronnen zijn mappen waarin moet worden gezocht naar bestanden die niet in de
huidige map. Als er geen bronnen zijn opgegeven, alle eerder opgegeven bronnen
mappen worden verwijderd. Als de bron het bijzondere is .DOTLAST doel, dan de
de huidige werkmap wordt als laatste doorzocht.

.PAD.achtervoegsel
Like .PAD maar is alleen van toepassing op bestanden met een bepaald achtervoegsel. Het achtervoegsel moet
eerder zijn aangegeven bij .SUFFIXEN.

.NEP Breng de .NEP toeschrijven aan gespecificeerde bronnen.

.SCHITTEREND
Breng de .SCHITTEREND attribuut aan een gespecificeerde bron. Als er geen bronnen zijn
gespecificeerd, de .SCHITTEREND attribuut wordt toegepast op elk doel in het bestand.

.SCHELP Stelt de shell in bmaken zal gebruiken om opdrachten uit te voeren. De bronnen zijn een set van
veld=waarde paren.

naam Dit is de minimale specificatie die wordt gebruikt om een ​​van de ingebouwde opties te selecteren
shell-specificaties; sh, kshen csh.

pad Specificeert het pad naar de shell.

heeftErrCtl Geeft aan of de shell exit bij fout ondersteunt.

controle De opdracht om foutcontrole in te schakelen.

negeren De opdracht om foutcontrole uit te schakelen.

echo De opdracht om de echo van uitgevoerde opdrachten in te schakelen.

rustige Het commando om de echo van uitgevoerde commando's uit te schakelen.

filter De uitvoer die moet worden gefilterd na het uitgeven van het rustige commando. Typisch zo
identiek aan rustige.

foutVlag De vlag die de shell moet doorgeven om foutcontrole mogelijk te maken.

echoVlag De vlag die de shell moet doorgeven om opdracht-echo mogelijk te maken.

nieuwe lijn De letterlijke tekenreeks om de shell door te geven, wat resulteert in een enkele nieuwe regel
teken wanneer het buiten de aanhalingstekens wordt gebruikt.
Voorbeeld:

.SHELL: naam=ksh pad=/bin/ksh hasErrCtl=true \
check = "set -e" negeer = "set +e" \
echo = "set -v" quiet = "set +v" filter = "set +v" \
echoFlag=v errFlag=e nieuwe regel="'\n'"

.STIL Breng de .STIL toeschrijven aan gespecificeerde bronnen. Als er geen bronnen zijn vermeld,
the .STIL attribuut wordt toegepast op elke opdracht in het bestand.

.MUF Dit doel wordt uitgevoerd wanneer een afhankelijkheidsbestand verouderde vermeldingen bevat, met .ALLSRC
ingesteld op de naam van dat afhankelijkheidsbestand.

.SUFFIXEN
Elke bron geeft een achtervoegsel aan bmaken. Als er geen bronnen zijn opgegeven, elke
eerder opgegeven achtervoegsels worden verwijderd. Het maakt het mogelijk om achtervoegsels te maken
transformatie regels.

Voorbeeld:

.ACHTERVOEGSELS: .o
.co:
cc -o ${.TARGET} -c ${.IMPSRC}

MILIEU


bmaken gebruikt de volgende omgevingsvariabelen, indien deze bestaan: MACHINE, MACHINE_ARCH,
MACHINE_MULTIARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, PWD en
TMPDIR.

MAKEOBJDIRPREFIX en MAKEOBJDIR mogen alleen in de omgeving of op de opdrachtregel worden ingesteld om
bmaken en niet als makefile-variabelen; zie de beschrijving van '.OBJDIR' voor meer details.

Gebruik pmake online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad




×
advertentie
❤️Koop, boek of koop hier — het is gratis, en zo blijven onze diensten gratis.