Starfsmaður Red Hat kynnti Goals samsetningarkerfið. Gefa út GNU Make 4.2

Richard WM Jones, rithöfundur libguestfs, sem vinnur hjá Red Hat, kynnt nýtt samsetningarverkfæri Markmið, sem miðar að því að útrýma göllum og vandamálum make gagnseminnar en viðhalda samt sem áður einfaldleika og skýrleika handrita. Make gagnsemin var hönnuð árið 1976 og hefur fjölda hugmyndalegra galla. Markmið Goals er að bæta úr þessum göllum án þess að breyta heildarhugmyndinni.
Frumkóði markmiða dreift af leyfi samkvæmt GPLv2+.

Leyst vandamál:

  • Stuðningur við aðeins eina aðferð til að leysa úr ósjálfstæði — „byggiskipun er keyrð ef markskráin vantar eða er eldri en ein af ósjálfstæðunum.“ Markmiðið er að innleiða aðrar aðferðir, svo sem að athuga hvort vefslóð sé til staðar, bera saman breytingartíma við hvaða skrá sem er og meta innbyggða pakkann. kōji, samanburður á eftirlitssummum, keyrsla prófunarsvíta með því að sleppa prófum sértækt.
  • Þegar unnið er úr byggingarmarkmiðum gerir make ekki greinarmun á skráar- og regluheitum og þar af leiðandi er engin athugun á því að skráin sem það segist búa til verði í raun búin til þegar reglan er keyrð. Til dæmis, ef regla sem heitir "test" keyrir prófunarforskriftir og skrá sem heitir "test" er óvart búin til, þá hætta prófanirnar að vera kallaðar, þar sem make gerir ráð fyrir að markmiðið hafi verið smíðað og þurfi ekki neinar aðgerðir. (Til að vinna í kringum þetta er hægt að tilgreina ".PHONY:test" skipunina í make.) Goals greinir skýrt á milli skráar- og regluheita.

    Starfsmaður Red Hat kynnti Goals samsetningarkerfið. Gefa út GNU Make 4.2
  • Vandamál með að gefa aðeins upp eina breytu fyrir samsetningarleiðbeiningar.

    Starfsmaður Red Hat kynnti Goals samsetningarkerfið. Gefa út GNU Make 4.2

    Markmið leyfa notkun á hvaða fjölda nefndra breytna sem er. Til dæmis er hægt að draga út villuleitarskrárflaggann sérstaklega úr nafninu:

    Starfsmaður Red Hat kynnti Goals samsetningarkerfið. Gefa út GNU Make 4.2
  • Vandamál sem hafa samskipti við skeltúlkinn. Til dæmis þörfin á að stjórna notkun bila í skráar- og möppunöfnum, kostnaður við að ræsa sérstakan skeltúlk fyrir hverja skipun, tvöföld túlkun á "$" tákninu (notað bæði í skelinni og make) og inndráttur.

    Vandamálin sem nefnd eru eru leyst í Goals með því að nota táknið „%“ í stað „$“ fyrir samsetningarbreytur („$“ er aðeins eftir fyrir skelina), með því að nota þáttara. LALR(1), sem krefst þess að slóðir og skráarnöfn séu tilvitnuð og kóðablokkir séu afmarkaðar með svigum. Öll skipanablokkin er keyrð í einu tilviki skipanaskeljarinnar og innan blokkarinnar er leyfilegt að sniða kóða eftir þörfum án þess að vera bundið af sérstökum bilum.

    Það var:
    skotmark: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    Það varð:
    "markmið": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

Aðrir eiginleikar markmiða:

  • Valfrjáls stuðningur við að tilgreina sérsniðin nöfn og breytur:

    markmið allt = : "markmið"

    markmiðstengill =
    "markmið" : "foo.o", "bar.o" { ... }

    markmiðssamsetning (nafn) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Tvær ræsistillingar: make-stilling til að para byggingarmarkmið við skráarnöfn (t.d. skráin "foo.o" passar við markið "%name.o") og bein þýðingarstilling:

    markmið allt = : tengill

    markmiðstengill =
    "markmið" : "foo.o", þýða ("stika") { ... }

    markmiðssamsetning (nafn) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Smíðaaðferðir eru skilgreindar með sérstökum reglum sem hægt er að nota til að ákvarða hvort endurbyggja þurfi byggingarmarkmið. Ef skráartilvist er krafist er það sérstaklega tilgreint með viðeigandi flaggi ("target" fyrir regluheitið og *file("target") fyrir skráarathugun).

    "markmið" : "foo.o", "bar.o" { ... }

    *skrá("markmið") : *skrá("foo.o"), *skrá("bar.o") { ... }

  • Forritarinn getur skilgreint sérsniðnar byggingarstefnufána. Fáninn „*skrá“ er sjálfgefið skilgreindur (@{…} gefur til kynna að úttak sé hætt og „hætta 99“ gefur til kynna þörfina á endurbyggingu):

    taktík *skrá (skráarnafn) = @{
    próf -f %skráarnafn || hætta 99
    fyrir f í %

    Heimild: opennet.ru

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster