Mpiasan'ny Red Hat no nanolotra ny rafitra fivorian'ny Goals. Famoahana ny GNU Make 4.2

Richard WM Jones, mpanoratra libguestfs, miasa ao amin'ny Red Hat, nanaiky utility build vaovao tanjona, mikendry ny hanafoanana ny lesoka sy ny olana eo amin'ny fampiasana ny fanaovana nefa mitazona ny fahatsoran'ny ankapobeny sy ny fahatakarana ny soratra. Ny make utility dia noforonina tamin'ny 1976 ary manana lesoka ara-kevitra maromaro; Ny tanjona dia mikasa ny hanafoana ireo lesoka ireo nefa tsy manova ny foto-kevitra ankapobeny.
Kaody loharanon'ny tanjona nozarain'i nahazoan-dalana GPLv2+.

Solvable problems:

  • Fanohanana ho an'ny tetika famahana ny fiankinan-doha tokana - "Ny torolΓ lana fivoriambe dia mandeha raha tsy hita ny rakitra kendrena na efa antitra noho ny iray amin'ireo miankina." Mikasa ny hampihatra tetika hafa ny tanjona, toy ny fisavana ny fisian'ny URL, fampitahana ny fotoana fanovana amin'ny rakitra rehetra, fanombanana ny fananganana fonosana. kōji, fampitahana ny checksums, fampandehanana trangam-panadinana miaraka amin'ny fandalovan'ny fitsapana.
  • Rehefa manamboatra lasibatra fananganana, ny make dia tsy manasaraka ny rakitra sy ny anaran'ny fitsipika, ary vokatr'izany, tsy misy fanamarinana fa rehefa mampandeha fitsipika, dia ho noforonina tokoa ny rakitra lazainy fa noforonina. Ohatra, raha manana fitsipika antsoina hoe "fitsapana" ianao izay mampandeha script miaraka amin'ny fitsapana, dia noforonina tsy nahy ny rakitra iray antsoina hoe "fitsapana", dia tsy hantsoina intsony ny fitsapana, satria ny make dia mihevitra fa ny tanjona dia natsangana ary tsy mitaky. ny hetsika rehetra (ho an'ny famahana ny olana amin'ny fanaovana dia azonao atao ny mamaritra ny torolΓ lana ".PHONY: test"). Ny tanjona dia manasaraka mazava ny rakitra sy ny anaran'ny fitsipika.

    Mpiasan'ny Red Hat no nanolotra ny rafitra fivorian'ny Goals. Famoahana ny GNU Make 4.2

  • Olana amin'ny fanomezana mari-pamantarana tokana ho an'ny torolalana amin'ny fanangonana.

    Mpiasan'ny Red Hat no nanolotra ny rafitra fivorian'ny Goals. Famoahana ny GNU Make 4.2

    Ny tanjona dia ahafahanao mampiasa isa tsy misy dikany amin'ny masontsivana nomena anarana. Ohatra, azonao atao ny manala ny mariky ny rakitra debug amin'ny anarana:

    Mpiasan'ny Red Hat no nanolotra ny rafitra fivorian'ny Goals. Famoahana ny GNU Make 4.2

  • Olana mifandray amin'ny mpandika teny shell. Ohatra, ilaina ny fanaraha-maso ny fandosiran'ny habaka amin'ny anaran'ny rakitra sy ny lahatahiry, ny fandaniam-bola amin'ny fandefasana mpandika teny iray misaraka rehefa manatanteraka ny baiko tsirairay, ny fandikana indroa ny toetran'ny "$" (ampiasaina amin'ny shell sy ny make), mandray ny indentations.

    Ireo olana ireo dia voavaha ao amin'ny Tanjona amin'ny alΓ lan'ny fampiasana ny marika "%" fa tsy "$" ho an'ny faribolan'ny fivoriambe ("$" mijanona ho an'ny akorandriaka ihany), mampiasa parser. LALR(1), izay mitaky anao hanodidina ny lalana sy ny anaran'ny rakitra miaraka amin'ny teny nindramina ary manasongadina bloc code miaraka amin'ny braces olioly. Ny sakana baiko manontolo dia atomboka amin'ny ohatra iray amin'ny shell baiko, ary ao anatin'ny sakana dia avela ny fandrafetana fehezan-dalΓ na tsy misy dikany, tsy misy firesahana amin'ny habaka manokana.

    dia:
    lasibatra: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

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

Endri-javatra hafa amin'ny tanjona:

  • Fanohanana azo atao amin'ny famaritana anarana sy masontsivana tsy mety:

    tanjona rehetra =: "kendrena"

    rohy tanjona =
    "target" : "foo.o", "bar.o" { ... }

    fitambarana tanjona (anarana) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Fomba fandefasana roa: manamboara fomba hifanaraka amin'ny tanjona fananganana miaraka amin'ny anaran-drakitra (ohatra, ny rakitra "foo.o" mifanandrify amin'ny tanjona "%name.o"), ary ny fomba fanangonana mivantana:

    tanjona rehetra =: rohy

    rohy tanjona =
    "target" : "foo.o", compile ("bar") { ... }

    fitambarana tanjona (anarana) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Ny paikadin'ny fivoriambe dia faritana amin'ny alΓ lan'ny fitsipika manokana izay azo ampiasaina hamaritana ny ilΓ na ny fananganana indray ny tanjona iray. Raha misy rohy atao amin'ny fisian'ny rakitra iray, dia voafaritra mazava izany amin'ny alΓ lan'ny famantarana mifanaraka amin'izany ("kendrena" ho an'ny anaran'ny fitsipika sy *rakitra (β€œkendrena”) hanamarinana ilay rakitra).

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

    *rakitra("kendrena") : *rakitra("foo.o"), *rakitra("bar.o") { ... }

  • Ny mpamorona dia afaka mamaritra ny toetra tsy misy dikany amin'ny tetika fanangonana. Ny saina "*rakitra" dia voafaritra amin'ny alΓ lan'ny default (@{...} dia manondro ny fanafoanana ny vokatra, ary ny "fivoahana 99" dia manondro ny ilana fanamboarana):

    taktika *rakitra (anarana) = @{
    test -f %filename || fivoahana 99
    ho an'ny f amin'ny %

    Source: opennet.ru

Add a comment