Umsebenzi we-Red Hat ubonise inkqubo yendibano yeeNjongo. Ukukhutshwa kwe-GNU Yenza 4.2

URichard WM Jones, umbhali mzantsiweb, ndisebenza eRed Hat, wazisiwe into entsha yokudibanisa Goals, ejolise ekupheliseni iziphene kunye neengxaki kwi-utility of make ngelixa kugcinwa ukulula ngokubanzi kunye nokuqondwa kwezikripthi. I-make utility yenziwe ngo-1976 kwaye ineentsilelo ezininzi zeeNjongo zokuphelisa ezi ntsilelo ngaphandle kokutshintsha ingcamango jikelele.
Ikhowudi yomthombo weenjongo isasazwa ngu ilayisenisi phantsi kwe-GPLv2+.

Iingxaki kufuneka zisonjululwe:

  • 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.

    Umsebenzi we-Red Hat ubonise inkqubo yendibano yeeNjongo. Ukukhutshwa kwe-GNU Yenza 4.2

  • Ingxaki ngokubonelela ngepharamitha enye kuphela yemiyalelo yendibano.

    Umsebenzi we-Red Hat ubonise inkqubo yendibano yeeNjongo. Ukukhutshwa kwe-GNU Yenza 4.2

    Iinjongo zikuvumela ukuba usebenzise inani elingenasizathu leeparamitha ezinegama. Umzekelo, ungakhupha ngokwahlukileyo uphawu lwefayile yokulungisa ingxaki kwigama:

    Umsebenzi we-Red Hat ubonise inkqubo yendibano yeeNjongo. Ukukhutshwa kwe-GNU Yenza 4.2

  • 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

Yongeza izimvo