Umsebenzi we-Red Hat wethule uhlelo lokuhlanganisa i-Goals. Ukukhishwa kwe-GNU Yenza 4.2

URichard WM Jones, umbhali umagazine, ngisebenza eRed Hat, kwethulwa uhlelo lokusebenza olusha Imigomo, okuhloswe ngayo ukususa ukushiyeka nezinkinga ekusebenziseni ukwakheka kuyilapho kugcinwa ubulula nokuqondakala kwemibhalo. I-make Utility yaklanywa ngo-1976 futhi inenqwaba yokushiyeka komqondo; Imigomo ihlela ukuqeda lokhu kushiyeka ngaphandle kokushintsha umqondo ojwayelekile.
Ikhodi yomthombo wemigomo isatshalaliswa ngu ilayisensi ngaphansi kwe-GPLv2+.

Izinkinga okufanele zixazululwe:

  • Ukusekelwa kweqhinga elilodwa kuphela lokuxazulula ukuncika - "umyalelo wokuhlanganisa uqhutshwa uma ifayela eliqondiwe lingekho noma lidala kunoyedwa wabancikile." Imigomo ihlela ukusebenzisa amanye amaqhinga, njengokuhlola ubukhona be-URL, ukuqhathanisa izikhathi zokulungiswa nanoma yiliphi ifayela, ukuhlola ukwakhiwa kwephakheji ngaphakathi. UKoji, ukuqhathaniswa kwamasheke, ukusebenzisa amacala okuhlola ngokweqa okukhethekile kokuhlolwa.
  • Lapho ucubungula izinhloso zokwakha, i-make ayihlukanisi amafayela namagama omthetho, futhi ngenxa yalokho, asikho isheke lokuthi lapho usebenzisa umthetho, ifayela elithi lidaliwe lizokwakhiwa ngempela. Isibonelo, uma unomthetho obizwa ngokuthi "test" osebenzisa izikripthi ezinokuhlolwa, ifayela elibizwa ngokuthi "test" lidalwe ngephutha, khona-ke ukuhlolwa ngeke kusabizwa, njengoba i-make izocabangela ukuthi ithagethi yakhiwe futhi ayidingi. noma yisiphi isenzo (Ukuze ulungise inkinga ekhona, ungacacisa umyalelo othi “.PHONY: test”). Imigomo ihlukanisa ngokusobala amafayela namagama wemithetho.

    Umsebenzi we-Red Hat wethule uhlelo lokuhlanganisa i-Goals. Ukukhishwa kwe-GNU Yenza 4.2

  • Inkinga ngokunikeza ipharamitha eyodwa kuphela yemiyalelo yokuhlanganisa.

    Umsebenzi we-Red Hat wethule uhlelo lokuhlanganisa i-Goals. Ukukhishwa kwe-GNU Yenza 4.2

    Imigomo ikuvumela ukuthi usebenzise inombolo engafanele yamapharamitha aqanjwe igama. Isibonelo, ungakwazi ukukhipha ngokuhlukile uphawu lwefayela lokususa iphutha egameni:

    Umsebenzi we-Red Hat wethule uhlelo lokuhlanganisa i-Goals. Ukukhishwa kwe-GNU Yenza 4.2

  • Izinkinga zokusebenzelana notolika wegobolondo. Isibonelo, isidingo sokulawula ukuphunyuka kwezikhala efayeleni namagama ohla lwemibhalo, ukumoshakala kwezinsiza ekuqaliseni isitolika segobolondo esihlukile lapho senza umyalo ngamunye, ukutolika okuphindwe kabili kohlamvu oluthi “$” (olusetshenziswa kukho kokubili igobolondo nokwenza), ngokucabangela ama-indentations.

    Lezi zinkinga zixazululwa kokuthi Imigomo ngokusebenzisa uphawu elithi “%” esikhundleni sika-“$” kokuhluka komhlangano (“$” isala kugobolondo kuphela), kusetshenziswa umhlahleli. I-LALR(1), okudinga ukuthi uzungeze izindlela namagama wamafayela ngezingcaphuno futhi ugqamise amabhlogo ekhodi ngezikaki ezigoqekile. Lonke ibhulokhi yomyalo yethulwa esimweni esisodwa segobolondo lomyalo, futhi ngaphakathi kwebhulokhi, ukufometha kwekhodi okungafanele kuvunyelwe, ngaphandle kokubhekisela ezikhaleni ezikhethekile.

    Bekuyi:
    okuhlosiwe: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

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

Ezinye izici Imigomo:

  • Ukwesekwa ongakukhetha kokucacisa amagama namapharamitha angafanele:

    goal all = : "target"

    isixhumanisi somgomo =
    "target" : "foo.o", "bar.o" { ... }

    iqoqo lomgomo (igama) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Izindlela ezimbili zokuqalisa: yenza imodi yokufanisa okuhlosiwe kokwakha namagama wefayela (isibonelo, ifayela elithi "foo.o" lifana nethagethi ethi "%name.o"), kanye nemodi yokuhlanganisa eqondile:

    inhloso konke = : isixhumanisi

    isixhumanisi somgomo =
    "target" : "foo.o", hlanganisa ("ibha") { ... }

    iqoqo lomgomo (igama) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Amaqhinga omhlangano anqunywa imithetho ekhethekile engasetshenziswa ukunquma isidingo sokuhlanganisa kabusha okuhlosiwe komhlangano. Uma isixhumanisi senziwa ekubeni khona kwefayela, khona-ke lokhu kunqunywa ngokucacile ngophawu oluhambisanayo (“okuhlosiwe” kwegama lomthetho kanye *nefayela (“ithagethi”) ukuze kuhlolwe ifayela).

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

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

  • Unjiniyela angachaza izibaluli ezingafanele zamaqhinga wokuhlanganisa. Ifulegi elithi "*ifayela" lichazwa ngokuzenzakalelayo (@{...} libonisa ukucindezelwa kokuphumayo, futhi "ukuphuma ku-99" kubonisa isidingo sokwakha kabusha):

    isu *ifayela (igama lefayela) = @{
    test -f %igama lefayela || phuma 99
    kwe-f ku-%

    Source: opennet.ru

Engeza amazwana