Oṣiṣẹ Red Hat ṣe afihan eto apejọ Awọn ibi-afẹde. Itusilẹ ti GNU Ṣe 4.2

Richard WM Jones, onkowe libguestfs, ṣiṣẹ ni Red Hat, ṣafihan titun ijọ IwUlO afojusun, Eleto lati yiyo shortcomings ati isoro ni awọn IwUlO ti ṣe nigba ti mimu awọn ìwò ayedero ati oye ti awọn iwe afọwọkọ. IwUlO ti ṣe apẹrẹ ni ọdun 1976 ati pe o ni nọmba awọn ailagbara imọran; Awọn ibi-afẹde ngbero lati yọkuro awọn ailagbara wọnyi laisi iyipada imọran gbogbogbo.
Awọn ibi-afẹde orisun koodu pin nipasẹ iwe-aṣẹ labẹ GPLv2+.

Awọn iṣoro lati yanju:

  • Atilẹyin fun ọgbọn ipinnu igbẹkẹle kan nikan - “Itọnisọna apejọ naa nṣiṣẹ ti faili ibi-afẹde ba sonu tabi ti dagba ju ọkan ninu awọn igbẹkẹle lọ.” Awọn ibi-afẹde ngbero lati ṣe awọn ilana miiran, gẹgẹbi ṣayẹwo fun wiwa URL kan, ifiwera awọn akoko iyipada pẹlu faili eyikeyi, iṣiro idii idii ninu kọji, lafiwe ti checksums, nṣiṣẹ igbeyewo igba pẹlu yiyan mbẹ ti igbeyewo.
  • Nigbati ṣiṣe awọn ibi-afẹde kọ, ṣe ko ṣe iyatọ awọn faili ati awọn orukọ ofin, ati bi abajade, ko si ayẹwo pe nigba ṣiṣe ofin kan, faili ti o sọ pe o ṣẹda yoo ṣẹda gangan. Fun apẹẹrẹ, ti o ba ni ofin kan ti a pe ni “idanwo” ti o nṣiṣẹ awọn iwe afọwọkọ pẹlu awọn idanwo, faili ti a npè ni “idanwo” jẹ lairotẹlẹ ṣẹda, lẹhinna awọn idanwo naa ko ni pe mọ, nitori ṣiṣe yoo ro pe ibi-afẹde ti kọ ati pe ko nilo. eyikeyi igbese (fun Lati ṣiṣẹ ni ayika isoro ni ṣiṣe, o le pato awọn ". PHONY: igbeyewo" šẹ). Awọn ibi-afẹde ṣe iyatọ awọn faili ni gbangba ati awọn orukọ ofin.

    Oṣiṣẹ Red Hat ṣe afihan eto apejọ Awọn ibi-afẹde. Itusilẹ ti GNU Ṣe 4.2

  • Isoro pẹlu a pese nikan paramita fun ijọ ilana.

    Oṣiṣẹ Red Hat ṣe afihan eto apejọ Awọn ibi-afẹde. Itusilẹ ti GNU Ṣe 4.2

    Awọn ibi-afẹde gba ọ laaye lati lo nọmba lainidii ti awọn paramita ti a darukọ. Fun apẹẹrẹ, o le yọ ami ti faili yokokoro jade lọtọ lati orukọ:

    Oṣiṣẹ Red Hat ṣe afihan eto apejọ Awọn ibi-afẹde. Itusilẹ ti GNU Ṣe 4.2

  • Awọn iṣoro ibaraenisepo pẹlu onitumọ ikarahun. Fun apẹẹrẹ, iwulo lati ṣakoso salọ awọn aaye ninu faili ati awọn orukọ itọsọna, egbin awọn orisun lori ifilọlẹ onitumọ ikarahun lọtọ nigbati o ba n ṣiṣẹ aṣẹ kọọkan, itumọ ilọpo meji ti ohun kikọ “$” (ti a lo ninu ikarahun mejeeji ati ṣe), mu sinu iroyin indentations.

    Awọn iṣoro wọnyi ni a yanju ni Awọn ibi-afẹde nipa lilo aami “%” dipo “$” fun awọn oniyipada apejọ (“$” wa fun ikarahun nikan), ni lilo parser LALR(1), eyi ti o nbeere ki o yika awọn ipa ọna ati awọn orukọ faili pẹlu awọn agbasọ ọrọ ati saami awọn bulọọki koodu pẹlu awọn àmúró iṣupọ. Gbogbo bulọọki aṣẹ ni a ṣe ifilọlẹ ni apẹẹrẹ kan ti ikarahun aṣẹ, ati laarin bulọọki naa, koodu lainidii jẹ idasilẹ, laisi itọkasi awọn aaye pataki.

    je:
    afojusun: foo.o bar.o
    ${CC} ${CFLAGS} $<-o $@

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

Awọn ẹya miiran ti Awọn ibi-afẹde:

  • Atilẹyin iyan fun sisọ awọn orukọ lainidii ati awọn paramita:

    ìlépa gbogbo = : "afojusun"

    ọna asopọ ìlépa =
    "target": "foo.o", "bar.o" {...}

    akojo ìlépa (orukọ) =
    "%name.o" : "%name.c", "dep.h" {%CC %CFLAGS -c $^ -o $@}

  • Awọn ipo ifilọlẹ meji: ṣe ipo lati baramu awọn ibi-afẹde kikọ pẹlu awọn orukọ faili (fun apẹẹrẹ, faili “foo.o” ibaamu ibi-afẹde “%name.o”), ati ipo akopọ taara:

    ìlépa gbogbo = : ọna asopọ

    ọna asopọ ìlépa =
    "target": "foo.o", kojọpọ ("ọgi") {...}

    akojo ìlépa (orukọ) =
    "%name.o" : "%name.c", "dep.h" {%CC %CFLAGS -c $^ -o $@}

  • Awọn ilana apejọ jẹ ipinnu nipasẹ awọn ofin pataki ti o le ṣee lo lati pinnu iwulo lati tun ibi-afẹde apejọ kan papọ. Ti o ba ṣe ọna asopọ kan si wiwa faili kan, lẹhinna eyi ni ipinnu ni gbangba nipasẹ ami ti o baamu (“afojusun” fun orukọ ofin ati * faili (“afojusun”) fun ṣayẹwo faili naa).

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

    * faili ("afojusun"): *faili ("foo.o"), *faili ("bar.o") {...}

  • Olùgbéejáde le ṣalaye awọn abuda lainidii ti awọn ilana apejọ. Asia "*faili" jẹ asọye nipasẹ aiyipada (@{...} tọkasi idinku ti iṣelọpọ, ati “jade 99” n ṣe afihan iwulo fun atunṣe):

    tactic *faili (orukọ faili) = @{
    idanwo -f% orukọ faili || jade 99
    fun f ninu%

    orisun: opennet.ru

Fi ọrọìwòye kun