Mumwe mushandi weRed Hat akapa iyo Goals assembly system. Kuburitswa kweGNU Gadzira 4.2

Richard WM Jones, munyori libguestfs, ndichishanda kuRed Hat, kuunzwa itsva musangano utility zvinangwa, yakanangana nekubvisa zvikanganiso uye matambudziko mukushandiswa kwekugadzira uchichengetedza kupfava kwese uye kunzwisiswa kwezvinyorwa. The make utility rakagadzirwa muna 1976 uye ane akati wandei pfungwa kukanganisa;
Zvinangwa source code inoparadzirwa ne ine rezinesi pasi peGPLv2+.

Matambudziko anofanira kugadziriswa:

  • Tsigiro yenzira imwe chete yekumisikidza - "murairo wegungano unoitiswa kana faira rekunangwa risipo kana kuti rakakura kudarika rimwe revanotsamira." Zvinangwa zvinoronga kuita mamwe matekiniki, sekutarisa kuvepo kweURL, kuenzanisa nguva dzekuchinja nechero faira, kuongorora iyo pasuru inovaka mukati. kōji, kuenzanisa kwemacheki, kumhanya bvunzo makesi nekusarudza kusvetuka kwebvunzo.
  • Paunenge uchigadzira tarisiro dzichigadzira, ita kuti uregedze mafaera nekutonga mazita, uye semhedzisiro, hapana cheki iyo kana ichimhanya mutemo, iyo faira inotaura kuti isikwa ichagadzirwa. Semuenzaniso, kana uine mutemo unonzi "test" unomhanyisa zvinyorwa zvine bvunzo, faira rakanzi "test" rakagadzirwa netsaona, ipapo bvunzo hadzichadanwa, sezvo make achafunga kuti chinangwa chakavakwa uye hachidi. chero chiito (kuti ushande zvakapoteredza dambudziko mukugadzira, unogona kutsanangura ".PHONY: test" directive). Zvinangwa zvinoparadzanisa mafaera nemazita ekutonga.

    Mumwe mushandi weRed Hat akapa iyo Goals assembly system. Kuburitswa kweGNU Gadzira 4.2

  • Dambudziko nekupa parameter imwe chete yemirairo yegungano.

    Mumwe mushandi weRed Hat akapa iyo Goals assembly system. Kuburitswa kweGNU Gadzira 4.2

    Zvinangwa zvinokutendera kuti ushandise nhamba inopokana yemaparamita ane mazita. Semuenzaniso, unogona kubvisa zvakasiyana chiratidzo che debug faira kubva pazita:

    Mumwe mushandi weRed Hat akapa iyo Goals assembly system. Kuburitswa kweGNU Gadzira 4.2

  • Matambudziko ekudyidzana nemuturikiri wegoko. Semuyenzaniso, kudiwa kwekudzora kupukunyuka kwenzvimbo mumafaira nemazita edhairekitori, kutambisa zviwanikwa pakutangisa muturikiri wegoko rakasiyana paunenge uchiita murairo wega wega, dudziro yakapetwa kaviri ye "$" hunhu (inoshandiswa mune zvese shell uye kugadzira), tichifunga nezve indentations.

    Matambudziko aya anogadziriswa muZvinangwa nekushandisa chiratidzo che "%" pachinzvimbo che "$" chezvigadziriso zvegungano ("$" inosara yegoko chete), uchishandisa parser. LALR(1), izvo zvinoda kuti iwe utenderedze nzira uye mazita emafaira ane makotesheni uye simbisa mabhuraki ekodhi ane curly braces. Iyo yese yekuraira block inotangwa mune imwe muenzaniso weiyo gomba rekuraira, uye mukati meiyo block, kupokana kodhi fomati inobvumidzwa, pasina kutaurwa kune dzakakosha nzvimbo.

    Waive:
    chinangwa: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

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

Zvimwe zveZvinangwa:

  • Sarudzo yerutsigiro yekutsanangudza mazita nemaparameter:

    chinangwa zvese = : "chinangwa"

    chinangwa chinongedzo =
    "target" : "foo.o", "bar.o" {... }

    chinangwa kuunganidza (zita) =
    "%name.o" : "%name.c", "dep.h" {%CC %CFLAGS -c $^ -o $@ }

  • Maitiro maviri ekuvhura: gadzira modhi yekuenzanisa zvibodzwa zvekuvaka nemazita emafaira (semuenzaniso, faira "foo.o" inofananidzira chinangwa "% name.o"), uye yakananga kuunganidza maitiro:

    chinangwa zvese = : link

    chinangwa chinongedzo =
    "target" : "foo.o", unganidza ("bar") {... }

    chinangwa kuunganidza (zita) =
    "%name.o" : "%name.c", "dep.h" {%CC %CFLAGS -c $^ -o $@ }

  • Mazano egungano anotarwa nemitemo yakakosha inogona kushandiswa kuona kukosha kwekubatanidzazve chinangwa chegungano. Kana chinongedzo chikaitwa pakuvapo kwefaira, zvino izvi zvinotsanangurwa zvakajeka kuburikidza nechiratidzo chinoenderana ("chinangwa" chezita rekutonga uye * faira ("chinangwa") chekutarisa faira).

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

    *faira("chinangwa") : *faira("foo.o"), *faira("bar.o") {...}

  • Mugadziri anogona kutsanangura zvinopokana hunhu hwekusangana maitiro. Iyo "* faira" mureza inotsanangurwa neyakagadzika (@{...} inoratidza kudzvanywa kwezvinobuda, uye "kubuda 99" kunoratidza kudiwa kwekuvaka patsva):

    nzira *faira (zita refaira) = @{
    test -f % filename || kubuda 99
    zve f mu%

    Source: opennet.ru

Voeg