Karmendek Red Hat pergala meclîsa Goals pêşkêş kir. Rakirina GNU Make 4.2

Richard WM Jones, nivîskar libguestfs, li Red Hat dixebite, danasîn karûbarê civîna nû armancên, bi mebesta rakirina kêmasî û pirsgirêkên di karanîna makeyê de digel ku sadebûn û têgihîştina giştî ya nivîsan diparêze. Karsaziya make di sala 1976-an de hate sêwirandin û çend kêmasiyên têgehî hene ku plan dike ku van kêmasiyan bêyî guheztina konsepta giştî ji holê rake.
Koda çavkaniyê ya armancên belav kirin ji hêla lîsansa di bin GPLv2+.

Pirsgirêkên ku bêne çareser kirin:

  • Piştgiriya tenê ji bo yek taktîkek çareseriya girêdayîbûnê - "Rêveberiya meclîsê tê meşandin heke pelê armanc wenda be an ji yek ji girêdanan kevntir be." Armanc plan dike ku taktîkên din bicîh bîne, wek kontrolkirina hebûna URL-ê, berhevdana demên guheztinê bi her pelê re, nirxandina avakirina pakêtê. kōji, danberheva jimareyên kontrolê, meşandina dozên îmtîhanê bi derbasbûna bijartî ya ceribandinan.
  • Dema ku armancên çêkirinê hilberandin, make pelan û navên qaîdeyan ji hev venaqetîne, û di encamê de, kontrol tune ku dema ku qaîdeyek dimeşîne, pelê ku ew îdîa dike ku hatî afirandin dê bi rastî were afirandin. Mînakî, heke we qaîdeyek bi navê "test" heye ku bi testan nivîsan dimeşîne, pelek bi navê "test" bi xeletî hate afirandin, wê hingê ceribandin êdî nayên gazî kirin, ji ber ku make dê bifikire ku armanc hatî çêkirin û ne hewce ye. her çalakiyek (ji bo ku hûn li ser pirsgirêkê di makeyê de bixebitin, hûn dikarin rêwerznameya ".PHONY: test" diyar bikin). Armanc bi eşkere pelan û navên qaîdeyan ji hev vediqetîne.

    Karmendek Red Hat pergala meclîsa Goals pêşkêş kir. Rakirina GNU Make 4.2

  • Pirsgirêka peydakirina tenê yek parametreyek ji bo rêwerzên civînê.

    Karmendek Red Hat pergala meclîsa Goals pêşkêş kir. Rakirina GNU Make 4.2

    Armanc destûrê dide te ku hûn hejmareke keyfî ya parametreyên binavkirî bikar bînin. Mînakî, hûn dikarin nîşana pelek debugê ji navê veqetînin:

    Karmendek Red Hat pergala meclîsa Goals pêşkêş kir. Rakirina GNU Make 4.2

  • Pirsgirêkên têkiliya bi wergêrê şêlê re. Mînakî, hewcedariya kontrolkirina revîna cîhên di navên pel û pelrêçayan de, windakirina çavkaniyan li ser destpêkirina wergêrek şêlê ya cihê di dema pêkanîna her fermanê de, şirovekirina ducarî ya karaktera "$" (hem di şêl û hem jî di çêkerê de tê bikar anîn), li ber çav girtin.

    Van pirsgirêkan di Armancan de bi karanîna nîşana "%" li şûna "$" ji bo guhêrbarên kombûnê ("$" tenê ji bo şêlê dimîne), bi karanîna parserek têne çareser kirin. LALR(1), ya ku ji we re hewce dike ku hûn rê û navên pelan bi qertafan dorpêç bikin û blokên kodê yên bi bendikên çîçek ronî bikin. Tevahiya bloka fermanê di yek mînakek şêlê fermanê de tê destpêkirin, û di hundurê blokê de, formatkirina koda kêfî destûr tê dayîn, bêyî referansa li cîhên taybetî.

    Bû:
    armanc: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    Bû:
    "target": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

Taybetmendiyên din ên Armancan:

  • Piştgiriya vebijarkî ji bo diyarkirina nav û pîvanên keyfî:

    armanc hemî = : "hedef"

    girêdana armancê =
    "target" : "foo.o", "bar.o" { ... }

    berhevkirina armancê (nav) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Du awayên destpêkirinê: moda çêbikin ku armancên çêkirinê bi navên pelan re li hev bikin (mînak, pelê "foo.o" bi "%name.o" re li hev dike), û moda berhevkirina rasterast:

    armanc hemî = : girêdan

    girêdana armancê =
    "target" : "foo.o", berhevkirin ("bar") { ... }

    berhevkirina armancê (nav) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Taktîkên meclîsê ji hêla qaîdeyên taybetî ve têne destnîşankirin ku dikarin bêne bikar anîn da ku hewcedariya ji nû ve komkirina armancek civînê were destnîşankirin. Ger girêdanek bi hebûna pelê re were çêkirin, wê hingê ev bi eşkere bi nîşana têkildar ("armanc" ji bo navê qaîdeyê û *pel ("armanc") ji bo kontrolkirina pelê tê destnîşankirin).

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

    *pel ("armanc"): *pel ("foo.o"), *pel ("bar.o") { ... }

  • Pêşvebir dikare taybetmendiyên kêfî yên taktîkên civînê diyar bike. Ala "* pelê" ji hêla xwerû ve hatî destnîşan kirin (@{...} tepisandina derketinê destnîşan dike, û "derketina 99" hewcedariya ji nû ve avakirinê nîşan dide):

    taktîk *pel (navê pelê) = @{
    test -f %navê pelê || derketin 99
    ji bo f li %

    Source: opennet.ru

Add a comment