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

Richard WM Jones, rithöfundur libguestfs, vinna hjá Red Hat, kynnt nýtt samsetningartæki Markmið, sem miðar að því að útrýma göllum og vandamálum í notagildi gerðar en viðhalda heildareinfaldleika og skiljanleika handrita. Make tólið var hannað árið 1976 og hefur fjölda hugmyndafræðilegra annmarka; Goals áformar að útrýma þessum göllum án þess að breyta almennu hugtakinu.
Frumkóði markmiða dreift af leyfi samkvæmt GPLv2+.

Leyst vandamál:

  • Stuðningur við aðeins eina tækni til að leysa úr ósjálfstæði - „samsetningarleiðbeiningarnar eru keyrðar ef markskrána vantar eða er eldri en ein ósjálfstæðis. Markmið ætlar 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, meta innbyggðan pakka kōji, samanburður á athugunarsummum, keyrslu próftilvika með vali sleppt prófum.
  • Við vinnslu byggingarmarkmiða aðskilur make ekki skrár og regluheiti og þar af leiðandi er ekkert athugað við að þegar reglu er keyrt verði skráin sem hún segist vera búin til í raun og veru. Til dæmis, ef þú ert með reglu sem kallast "próf" sem keyrir forskriftir með prófum, skrá sem heitir "próf" er óvart búin til, þá verða prófin ekki lengur kölluð, þar sem make mun telja að markmiðið sé byggt og krefst þess ekki hvaða aðgerð sem er (til að vinna í kringum vandamálið í make, geturðu tilgreint ".PHONY: test" tilskipunina). Markmið skilur skýrt að skrár og reglunöfn.

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

  • Vandamál með að gefa aðeins upp eina færibreytu fyrir samsetningarleiðbeiningar.

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

    Markmið gerir þér kleift að nota handahófskenndan fjölda nafngreindra stika. Til dæmis geturðu dregið út merki villuleitarskrár sérstaklega úr nafninu:

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

  • Vandamál í samskiptum við skeljatúlkann. Til dæmis, þörfin á að stjórna því að rými sleppa í skráar- og möppuheitum, sóun á fjármagni við að ræsa sérstakan skeljatúlk þegar hverja skipun er framkvæmd, tvöföld túlkun á „$“ stafnum (notað bæði í skel og make), að teknu tilliti til inndráttar.

    Þessi vandamál eru leyst í Goals með því að nota „%“ táknið í stað „$“ fyrir samsetningarbreytur („$“ er aðeins áfram fyrir skelina), með því að nota flokkunartæki LALR(1), sem krefst þess að þú umkringir slóðir og skráarnöfn með gæsalöppum og auðkenndu kóðablokka með hrokknum axlaböndum. Öll skipanareiturinn er ræstur í einu tilviki skipanaskeljarins og innan blokkarinnar er handahófskennd kóðasnið leyfð, án tilvísunar til sérstakra bila.

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

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

Aðrir eiginleikar markmiða:

  • Valfrjáls stuðningur við að tilgreina handahófskenndar nöfn og færibreytur:

    markmið allt = : "markmið"

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

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

  • Tvær ræsingarstillingar: búa til ham til að passa byggingarmarkmið við skráarheiti (til dæmis, skrá "foo.o" passar við markið "%name.o") og bein samansafn:

    markmið allt = : hlekkur

    markmiðstengillinn =
    "target" : "foo.o", setja saman ("bar") { ... }

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

  • Samsetningaraðferðir eru ákvörðuð af sérstökum reglum sem hægt er að nota til að ákvarða þörfina á að setja saman samsetningarmarkmið. Ef hlekkur er gerður við tilvist skráar, þá er það beinlínis ákvarðað með samsvarandi tákni („markmið“ fyrir regluheitið og *skrá („markmið“) til að athuga skrána).

    "target" : "foo.o", "bar.o" { ... }

    *file("target") : *file("foo.o"), *file("bar.o") { ... }

  • Framkvæmdaraðilinn getur skilgreint handahófskennda eiginleika samsetningaraðferða. "*skrá" fáninn er sjálfgefið skilgreindur (@{...} gefur til kynna bælingu á úttakinu og "útgangur 99" gefur til kynna þörfina á endurbyggingu):

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

    Heimild: opennet.ru

Bæta við athugasemd