URichard WM Jones, umbhali
Ikhowudi yomthombo weenjongo
- Inkxaso yeqhinga elinye lokusombulula ukuxhomekeka - "umyalelo wendibano uqhutywa ukuba ifayile ekujoliswe kuyo ayikho okanye indala kunomnye wabaxhomekeke." Iinjongo ziceba ukuphumeza amanye amaqhinga, anjengokukhangela ubukho be-URL, ukuthelekisa amaxesha okuguqulwa kunye nayo nayiphi na ifayile, ukuvavanya ukwakhiwa kwephakheji.
kōji , ukuthelekiswa kwee-checksums, ukuqhuba iimeko zovavanyo kunye nokutsiba okukhethiweyo kovavanyo. - Xa ukucubungula iithagethi zokwakha, ukwenza akuhlukanisi iifayile kunye namagama alawulayo, kwaye ngenxa yoko, akukho kukhangela ukuba xa uqhuba umgaqo, ifayile ebanga ukuba yenziwe iya kwenziwa ngokwenene. Umzekelo, ukuba unomgaqo obizwa ngokuba yi "test" oqhuba izikripthi ezineemvavanyo, ifayile ebizwa ngokuba "test" yenziwe ngempazamo, emva koko iimvavanyo azisayi kuphinda zibizwe, kuba ukwenza kuya kuqwalasela ukuba ithagethi yakhiwe kwaye ayifuni. nasiphi na isenzo (sokusebenza malunga nengxaki ekwenzeni, ungakhankanya ".PHONY: test" directive). Iinjongo zahlula ngokucacileyo iifayile kunye namagama omgaqo.
- Ingxaki ngokubonelela ngepharamitha enye kuphela yemiyalelo yendibano.
Iinjongo zikuvumela ukuba usebenzise inani elingenasizathu leeparamitha ezinegama. Umzekelo, ungakhupha ngokwahlukileyo uphawu lwefayile yokulungisa ingxaki kwigama:
- Iingxaki zokunxibelelana netoliki yeqokobhe. Umzekelo, imfuno yokulawula ukubaleka kwezithuba kwiifayile kunye namagama olawulo, inkcitho yemithombo yobutyebi ekusungulweni kwetoliki ehlukeneyo yeqokobhe xa uphumeza umyalelo ngamnye, ukutolika kabini kophawu "$" (olusetyenziswa kuzo zombini iqokobhe kunye nokwenza), kuthathelwa ingqalelo ukujongwa.
Ezi ngxaki zisonjululwa kwiiNjongo ngokusebenzisa isimboli ethi “%” endaweni ka-“$” kwizinto eziguquguqukayo zendibano (“$” isala kuphela kwiqokobhe), kusetyenziswa isicazululi.
I-LALR(1) , efuna ukuba ujikeleze iindlela kunye namagama efayile kunye neengcaphuno kwaye uqaqambise iibhloko zekhowudi ngeebrayisi ezigobileyo. Yonke ibhloko yomyalelo iqaliswe kumzekelo omnye wegobolondo lomyalelo, kwaye ngaphakathi kwebhloko, ukufomatha ikhowudi engafanelekanga kuvunyelwe, ngaphandle kokubhekisela kwizithuba ezikhethekileyo.Yayiyi:
ekujoliswe kuko: foo.o bar.o
${CC} ${CFLAGS} $< -o $@Yaba:
"target": "foo.o", "bar.o" {
%CC %CFLAGS %< -o %@
}
Ezinye iimpawu zeeNjongo:
- Inkxaso ekhethiweyo yokuchaza amagama angenasizathu kunye neeparamitha:
injongo yonke = : "ithagethi"
ikhonkco lenjongo =
"target" : "foo.o", "bar.o" {... }ukuqokelela injongo (igama) =
"%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ } - Iindlela ezimbini zokuphehlelelwa: yenza imowudi ihambelane neethagethi zokwakha ezinamagama eefayile (umzekelo, ifayile ethi "foo.o" ihambelana nethagethi "%name.o"), kunye nemo yokudibanisa ngokuthe ngqo:
injongo yonke = : ikhonkco
ikhonkco lenjongo =
"target" : "foo.o", qokelela ("bar") {... }ukuqokelela injongo (igama) =
"%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ } - Amaqhinga eNdibano agqitywe yimigaqo ekhethekileyo engasetyenziselwa ukumisela imfuno yokudibanisa kwakhona ithagethi yendibano. Ukuba ikhonkco lenziwe kubukho befayile, ke oku kugqitywe ngokucacileyo ngophawu oluhambelanayo ("ithagethi" yegama lolawulo kunye * nefayile ("ithagethi") yokujonga ifayile).
"target" : "foo.o", "bar.o" {... }
*ifayile("ithagethi") : *ifayile("foo.o"), *ifayile("bar.o") {...}
- Umphuhlisi unokuchaza iimpawu ezingafanelekanga zamaqhinga okuhlanganisa. I "*ifayile" iflegi ichazwa ngokungagqibekanga (@{...} ibonisa ukucinezelwa kwemveliso, kwaye "ukuphuma ku-99" kubonisa imfuno yokwakhiwa kwakhona):
iqhinga *ifayile (igama lefayile) = @{
uvavanyo -f % igama lefayile || ukuphuma 99
ye f kwi %umthombo: opennet.ru